【问题标题】:Finding last entry in a foreach() process在 foreach() 进程中查找最后一个条目
【发布时间】:2009-11-20 15:00:00
【问题描述】:

简单的一个人。

我有一个使用 simplexml_load_file() 解析的 XML。

以下代码:

<?php
    foreach($xml->actors->actor as $actors) {
        echo $actors.", ";
    }
?>

给出以下结果:

John Smith, Amy Adams, Charlie Doe, 

如何修改代码以使其给出:

John Smith, Amy Adams, Charlie Doe

这需要应用于数组中任意数量的条目。谢谢!

【问题讨论】:

  • 你试过This solution吗?
  • 好的,下一个(非常基本的)问题:如何将上述 foreach() 的结果分配给一个变量,以便稍后调用该变量以保持代码整洁?跨度>

标签: php foreach


【解决方案1】:

使用implode 函数。

echo implode(", ", $xml->actors->actor);

【讨论】:

  • 看来有共识了!谢谢大家 - 不知道存在这样的功能。
【解决方案2】:

可以在foreach中获取当前索引:

<?php
    foreach($xml->actors->actor as $key => $actors) {
     if ($key == (count($actors)-1) echo "Last entry!";
    }
?>

但是,在这种情况下,我更喜欢先创建一个包含条目的临时数组,然后将其内爆:

echo implode(",", $names);

【讨论】:

  • 如果有类似 implode 允许前缀和后缀的东西,那将非常适合构建 SQL 查询。
  • 只有当数组不关联时,才能获取索引(作为整数)。
  • @2astalavista 你是对的。我现在无法解决这个问题,我稍后可能会删除它。
【解决方案3】:
print implode(',',$xml->actors->actor);

【讨论】:

  • 仅供参考:echo 和 print 之间的区别在于 print 如果能够输出其内容,则返回一个值,而 echo 没有返回值。所以,你可以说 if(print('abc')),但不能说 if(echo('xyz'))
【解决方案4】:

我通常用一个简单的数组来解决这个问题:

<?php
$names = array();
foreach($xml->actors->actor as $actors) {
    $names[] = $actors;
}
echo implode(", ", $names);
?>

其实为什么不直接说

<?php
    echo implode(", ", $xml->actors->actor);
?>

【讨论】:

  • 1) foreach($xml->actors->actor as $actors) {echo $actors.", ";} 2) echo implode(',',$xml->actors->演员);陷入困境。第一个输出正确,第二个给我一个“无效参数”错误。有任何想法吗?谢谢。
【解决方案5】:

您可以按照上面许多人的建议对数组进行内爆,或者将参与者的名称分配给一个变量并在每次迭代时连接该变量,然后对结果数组执行 rtrim 操作以删除最后一个逗号。

但为了简单起见,请使用内爆。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-04
    • 2012-08-12
    • 2015-10-26
    • 2014-10-22
    • 2015-06-09
    • 2013-05-19
    • 2014-01-02
    相关资源
    最近更新 更多