PHP 迭代中的最后一项

Posted

技术标签:

【中文标题】PHP 迭代中的最后一项【英文标题】:Last item in iteration with PHP 【发布时间】:2011-10-15 08:35:53 【问题描述】:

我想用逗号分隔迭代结果,但它不是数组。我想在视图中做,所以代码不应该很长。

<?php foreach ($roles as $role): ?>
    <?php echo $role->title; ?>
<?php endforeach; ?>

Result 对象实现了 Countable、Iterator、SeekableIterator、ArrayAccess。

【问题讨论】:

【参考方案1】:

不确定我是否理解您的要求(您的代码基本上似乎按照您所说的做?)我看到的唯一缺少的是用逗号分隔。

<?php
$first=true;
foreach ($roles as $role) 
  if (!$first) echo ",";
  $first=false;
  echo $role->title;

?>

或者如果缓存没问题(字符串长度不太长):

<?php
$output="";
foreach ($roles as $role) 
  $output.=$role->title.",";

echo substr($output,0,-1);//Trim last comma
?>

【讨论】:

【参考方案2】:

如果您的$roles 变量是一个对象,请编写一个返回属性值数组的方法。比如:

class Roles implements Countable, Iterator, SeekableIterator, ArrayAccess 

  //main body of the class here

  public function prop_as_array($prop)
    if(!property_exists('Role', $prop)) throw new Exception("Invalid property");
    $arr=array();
    if(count($this)==0) return $arr
    foreach($this as $role)
      $arr[]=$role->$prop;
    
    return $arr;
  



//on output page
$roles=new Roles;
echo implode(',', $roles->prop_as_array('title'));

【讨论】:

以上是关于PHP 迭代中的最后一项的主要内容,如果未能解决你的问题,请参考以下文章

从多个链接获取数据,同时存储在 Scrapy 中的一项中

Oracle 游标在最后一项中运行两次

查找映射是不是包含列表/可迭代项中的任何键的有效方法

如何获取 BTreeMap 中的最后一项?

PHP 为除最后一项以外的每一项添加逗号

如何获取mysql重复项中的最后一条数据