PHP迭代中的最后一项

PHP迭代中的最后一项,php,orm,iterator,foreach,countable,Php,Orm,Iterator,Foreach,Countable,我想用逗号分隔迭代结果,但它不是数组。我想在视图中完成,所以代码不应该太长 <?php foreach ($roles as $role): ?> <?php echo $role->title; ?> <?php endforeach; ?> 结果对象实现了可数、迭代器、SeekableIterator、ArrayAccess。我不确定我是否理解你的要求(你的代码基本上是按照你说的做的?),我看到的唯一遗漏是用逗号分隔 <?php

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

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


结果对象实现了可数、迭代器、SeekableIterator、ArrayAccess。

我不确定我是否理解你的要求(你的代码基本上是按照你说的做的?),我看到的唯一遗漏是用逗号分隔

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

或者如果缓存正常(字符串长度不太长):


如果
$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'));
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'));