2014-11-06 42 views
1
<?php 
$json = "http://pastebin.com/raw.php?i=e1Sw66C3"; 
$data = json_decode(file_get_contents($json), true); 

$data = $data['recenttracks']; 
$tracks=$data['track']; 

foreach ($tracks as $track) { 
    $artist = $track['artist']['#text']; 
    $title = $track['name']; 
    $url = $track['url']; 
    $image = array_reduce($track['image'], function ($image, array $i) { return $image ?: ($i['size'] == 'large' ? $i['#text'] : null); }); 
echo '<li><a rel="external nofollow" href="'.htmlentities($url, ENT_QUOTES, "UTF-8").'" title="', $title, '">', $artist, ' - ', $title, '</a></li>'; } 
echo ($image); 
?> 

這段代碼一直工作。現在我不知道爲什麼BOOM echo ($image);什麼都不輸出。 我無法弄清楚那個函數有什麼問題。代碼的其餘部分工作正常(其他信息從輸入中獲取)。您可以通過訪問file_get_contents中的鏈接查看輸入內容。json_decode:array_reduce停止工作

+0

它的工作原理和輸出列表。 – Cheery 2014-11-06 02:07:25

+1

似乎工作... http://codepad.viper-7.com/bM2hXD – Ghost 2014-11-06 02:07:54

+0

您打開您的主機環境中的錯誤報告? ('ini_set('display_errors',1); error_reporting(E_ALL);'),因爲它適用於其他人。 – Darren 2014-11-06 02:11:30

回答

0

正如我在評論中寫的,以前你的代碼只是工作,因爲元素size = 'large'是最後一個,否則變量$image在每個循環被覆蓋。你需要的是這樣的

$json = "http://pastebin.com/raw.php?i=e1Sw66C3"; 
$data = json_decode(file_get_contents($json), true); 

$data = $data['recenttracks']; 
$tracks=$data['track']; 
$images = array(); 

foreach ($tracks as $track) { 
    $artist = $track['artist']['#text']; 
    $title = $track['name']; 
    $url = $track['url']; 
    if (isset($track['image']) && is_array($track['image'])) 
     foreach($track['image'] as $image) 
      if (isset($image['size']) && $image['size'] == 'large' && 
       isset($image['#text']) && !empty($image['#text'])) 
      $images[] = $image['#text']; 

    echo '<li><a rel="external nofollow" href="' . 
      htmlentities($url, ENT_QUOTES, "UTF-8") . '" title="', $title, '">', 
      $artist, ' - ', $title, '</a></li>'; 
} 
echo join("\n", $images); 
+0

我會在幾個小時內嘗試!謝謝:) – MultiformeIngegno 2014-11-06 06:54:53

+0

謝謝!有用!只是最後一件事!我怎樣才能從數組中提取最後的(「大」)圖像? – MultiformeIngegno 2014-11-06 19:13:48

+0

'end($ images)',例如+ http://stackoverflow.com/questions/3687358/best-way-to-get-last-element-of-an-array-wo-deleting-it – Cheery 2014-11-06 19:27:54