0

さまざまな「オブジェクト」に含まれる多くの結果を含む JSON があり、これも画像に関連しています。

"image":[
           {
              "#text":"http:\/\/BLAHBLAH",
              "size":"small"
           },
           {
              "#text":"http:\/\/BLAHBLAH",
              "size":"medium"
           },
           {
              "#text":"http:\/\/BLAHBLAH",
              "size":"large"
           }
        ]

$image = array_reduce($track['image'], function ($image, array $i) {
                 return $image ?: ($i['size'] == 'medium' ? $i['#text'] : null);
         });

私は中程度の画像のURLをecho $image取得しますが、ループ内の最初の結果の画像を(時系列で)取得します(JSONの下部)

代わりに最新の (年代順に) 取得するにはどうすればよいですか (JSON の先頭にある最初の結果)。

編集:これが コード全体です。リンクはこちらです(右下に関連部分が表示されます)。

4

1 に答える 1

2

私が理解していることから、あなたはサイズ==中の最初のものの後にいます

ここにそれを取得する関数があります。

 function getTextForSize($array, $size = "medium") {
      foreach($array as $v){
         if ($v["size"] == $size){
              return $v["#text"];
         }
      }
 }

言うだけで使う

 $text = getTextForSize($track["image"], "medium");

異なるサイズの画像が必要な場合は、2 番目の引数を変更します。

配列のreduceメソッドと結婚している場合は、これを試してください

$image = array_reduce($track['image'], function ($image, array $i) {
             return $image.((!$image) && $i['size'] == 'medium' ? $i['#text'] : null);
        }     
);

最初の要素だけを使用している場合は、これを簡単に行うことができます。

 $track['image'][0]

テキストが必要な場合は、次のように言います

 $track['image'][0]['#text'];

サイズについては

 $track['image'][0]['size'];
于 2013-06-05T20:19:23.757 に答える