2013-04-23 56 views
0

讓我先表明我的代碼:的foreach循環顯示一個一個條目

第1部分

<?php foreach($entries['items'] as $entry) : ?> 
    <audio preload="none" title="<?php echo $entry->title; ?>" data-date="<?php echo date("M d Y",strtotime($entry->pubDate)); ?>"> 
     <?php if ($entry->url != "") { ?> 
      <source src="<?php echo $entry->url; ?>" type="audio/mpeg" /> 
     <?php } else { ?> 
      <source src="<?php echo $entry->guid; ?>" type="audio/mpeg" /> 
     <?php } ?> 

      <!-- <source src="ogg_version.ogg" type="audio/ogg" /> --> 
    </audio> 
<?php endforeach; ?> 

第2部分

<?php 
foreach($entries['items'] as $entry) { 
    $output = '<audio preload="none" title="'.$entry->title.'" data-date="'.date("M d Y",strtotime($entry->pubDate)).'">'; 
    if ($entry->url != "") { 
    $output .= '<source src="'.$entry->url.'" type="audio/mpeg" />'; 
    } else { 
    $output .= '<source src="'.$entry->guid.'" type="audio/mpeg" />'; 
    } 
    $output .= '</audio>'; 

    return $output; 
} 

第1部分是好的,但部分2只返回一個條目。我無法識別錯誤。

回答

2
$output = '<audio preload="none" title="'.$entry->title.'" data-date="'.date("M d Y",strtotime($entry->pubDate)).'">'; 

應該

$output. = '<audio preload="none" title="'.$entry->title.'" data-date="'.date("M d Y",strtotime($entry->pubDate)).'">'; 

而且return調用應該是循環

3

變化

<?php 
    foreach($entries['items'] as $entry) { 
    $output = '<audio preload="none" title="'.$entry->title.'" data-date="'.date("M d Y",strtotime($entry->pubDate)).'">'; 

這個

<?php 
$output = ""; 
foreach($entries['items'] as $entry) { 

    $output.= '<audio preload="none" title="'.$entry->title.'" data-date="'.date("M d Y",strtotime($entry->pubDate)).'">'; 

你的foreach循環,每天你的循環時間分配新的價值。您需要初始化$ output變量,然後連接它。

1

試試這個代碼

<?php 
$output=''; 
foreach($entries['items'] as $entry) { 
    $output .= '<audio preload="none" title="'.$entry->title.'" data-date="'.date("M d Y",strtotime($entry->pubDate)).'">'; 
    if ($entry->url != "") { 
    $output .= '<source src="'.$entry->url.'" type="audio/mpeg" />'; 
    } else { 
    $output .= '<source src="'.$entry->guid.'" type="audio/mpeg" />'; 
    } 
    $output .= '</audio>'; 
} 
return $output; 
3

這是一個邏輯上的錯誤。 return指令在第一次迭代中退出循環。

代碼的梗概是:

foreach ($somethings as $something) { 
    // first iteration has begun 
    doSomethingWith($something); // done 
    return $something; // done, quite the loop 
} 
2

您從返回的值以外循環。這將不允許循環第二次執行。

試試看看這個代碼。

<?php 
$output=''; 
foreach($entries['items'] as $entry) { 
    $output .= '<audio preload="none" title="'.$entry->title.'" data-date="'.date("M d Y",strtotime($entry->pubDate)).'">'; 
    if ($entry->url != "") { 
    $output .= '<source src="'.$entry->url.'" type="audio/mpeg" />'; 
    } else { 
    $output .= '<source src="'.$entry->guid.'" type="audio/mpeg" />'; 
    } 
    $output .= '</audio>'; 
} 
return $output; 
相關問題