簡體   English   中英

PHP從JSON搜索多維數組以獲取特定值

[英]PHP Search Multidimensional Array from JSON for a specific value

我試圖從具有最高“字節”值的對象中獲取“名稱”值。 到目前為止,我的代碼是:

<?php

$str = file_get_contents('https://yivesmirror.com/api/spigot');

$json = json_decode($str, true);

echo get_highest($json);

function get_highest($json)
{
   foreach($json as $key => $val)
   {
      if ( is_array($val) ) $json[$key] = get_highest( $val );
   }
   sort($json);

   return array_pop($json);
}

?>

從此JSON文件中:

{
    "spigot-1.12-R0.1-SNAPSHOT-b1364.jar": {
        "name": "spigot-1.12-R0.1-SNAPSHOT-b1364.jar",
        "size": {
            "human": "40.52MB",
            "bytes": 42488067
        },
        "date": {
            "human": "July 25, 2017",
            "epoch": 1501040531
        }
    }
},
{
    "spigot-api-1.12-R0.1-SNAPSHOT-shaded-b1364.jar": {
        "name": "spigot-api-1.12-R0.1-SNAPSHOT-shaded-b1364.jar",
        "size": {
            "human": "4.10MB",
            "bytes": 4297941
        },
        "date": {
            "human": "July 25, 2017",
            "epoch": 1501040531
        }
    }
}

不幸的是,這是在搜索所有鍵,並給我“ epoch”值而不是“ bytes”值。 我怎樣才能:

  • 僅從“字節”對象中找到最大值?
  • 從找到最大“字節”值的位置獲取“名稱”值(如上所述)?

當我運行您的PHP時,它給了我:
Notice: Undefined index: urls in C:\\xampp\\htdocs\\FOLDER\\FILE

但是當我改變

$json = json_decode($str, true);



$json = var_dump(json_decode($str, true));

然后使用$version = $json['urls']['free']重新制作$version var

然后我寫道: echo $version它給了我:

array(294) { [0]=> array(1) { ["spigot-1.12-R0.1-SNAPSHOT-b1364.jar"]=> array(6) { ["name"]=> string(35) "spigot-1.12-R0.1-SNAPSHOT-b1364.jar" ["version"]=> array(1) { ["minecraft"]=> string(4) "1.12" } ["size"]=> array(2) { ["human"]=> string(7) "40.52MB" ["bytes"]=> int(42488067) } ["date"]=> array(2) { ["human"]=> string(13) "July 25, 2017" ["epoch"]=> int(1501040531) } ["hashes"]=> array(2) { ["md5"]=> string(32) "482dc5b3273e3c9aa4ed38da73e9e9f2" ["sha1"]=> string(40) "921ad2d9fbe9bfbbd6d48a4c15196d20f265ca5c" } ["urls"]=> array(2) { ["paid"]=> string(119) "http://sh.st/st/40260a458161ce19c15c6bc46ebe3bd6/http://yivesmirror.com/grab/spigot/spigot-1.12-R0.1-SNAPSHOT-b1364.jar" ["free"]=> string(71) "http://yivesmirror.com/files/spigot/spigot-1.12-R0.1-SNAPSHOT-b1364.jar" } } } [1]=> array(1) { ["spigot-api-1.12-R0.1-SNAPSHOT-shaded-b1364.jar"]=> array(6) { ["name"]=> string(46) "spigot-api-1.12-R0.1-SNAPSHOT-shaded-b1364.jar" ["version"]=> array(1) { ["minecraft"]=> string(4) "1.12" } ["size"]=> array(2) { ["human"]=> string(6) "4.10MB" ["bytes"]=> int(4297941) } ["date"]=> array(2) { ["human"]=> string(13) "July 25, 2017" ["epoch"]=> int(1501040531) } ["hashes"]=> array(2) { ["md5"]=> string(32) "c9f7107d886bb349ab5dd6b02c86c97f" ["sha1"]=> string(40) "5f3898abbad835708db330a82864f209bd2bf712" } ["urls"]=> array(2) { ["paid"]=> string(130) "http://sh.st/st/40260a458161ce19c15c6bc46ebe3bd6/http://yivesmirror.com/grab/spigot/spigot-api-1.12-R0.1-SNAPSHOT-shaded-b1364.jar" ["free"]=> string(82) "http://yivesmirror.com/files/spigot/spigot-api-1.12-R0.1-SNAPSHOT-shaded-b1364.jar" } } } [2]=> array(1) { ["spigot-api-1.12-R0.1-SNAPSHOT-b1364.jar"]=> array(6) { ["name"]=> string(39) "spigot-api-1.12-R0.1-SNAPSHOT-b1364.jar" ["version"]=> array(1) { ["minecraft"]=> string(4) "1.12" } ["size"]=> array(2) { ["human"]=> string(8) "857.34kB" ["bytes"]=> int(877913) } ["date"]=> array(2) { ["human"]=> string(13) "July 25, 2017" ["epoch"]=> int(1501040531) } ["hashes"]=> array(2) { ["md5"]=> string(32) "d8f24dbb642125c9f0ce107cd312fc05" ["sha1"]=> string(40) "3048301386c77e1e114c1312493b41ad9a977b52" } ["urls"]=> array(2) { ["paid"]=> string(123) "http://sh.st/st/40260a458161ce19c15c6bc46ebe3bd6/http://yivesmirror.com/grab/spigot/spigot-api-1.12-R0.1-SNAPSHOT-b1364.jar" ["free"]=> string(75) "http://yivesmirror.com/files/spigot/spigot-api-1.12-R0.1-SNAPSHOT-b1364.jar" } } } [3]=> array(1) { ["spigot-api-1.12-R0.1-SNAPSHOT-shaded-b1363.jar"]=> array(6) { ["name"]=> string(46) "spigot-api-1.12-R0.1-SNAPSHOT-shaded-b1363.jar" ["version"]=> array(1) { ["minecraft"]=> string(4) "1.12" } ["size"]=> array(2) { ["human"]=> string(6) "4.10MB" ["bytes"]=> int(4297941) } ["date"]=> array(2) { ["human"]=> string(13) "July 25, 2017" ["epoch"]=> int(1501040074) } ["hashes"]=> array(2) { ["md5"]=> string(32) "a360db7231f58f61719920b6dd9c7d65" ["sha1"]=> string(40)...

更新:
如果從$json = json_decode($str, true);刪除true參數$json = json_decode($str, true);

然后你的代碼應該工作

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM