0

让我先展示我的代码:

第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 部分只返回一个条目。我无法识别错误。

4

5 回答 5

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 变量,然后将其连接起来。

于 2013-04-23T04:28:25.970 回答
3

这是一个逻辑错误。return指令在第一次迭代时退出循环。

您的代码的基本内容是:

foreach ($somethings as $something) {
  // first iteration has begun
  doSomethingWith($something); // done
  return $something; // done, quite the loop
}
于 2013-04-23T04:29:15.383 回答
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调用应该在循环之外

于 2013-04-23T04:29:27.757 回答
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;
于 2013-04-23T04:34:00.790 回答
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;
于 2013-04-23T04:28:29.440 回答