Последний элемент в итерации с PHP - PullRequest
0 голосов
/ 28 июля 2011

Я хочу разделить результаты итерации запятыми, но это не массив.Я хочу сделать это в представлениях, поэтому код не должен быть длинным.

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

Объект результата реализует Countable, Iterator, SeekableIterator, ArrayAccess.

Ответы [ 2 ]

1 голос
/ 28 июля 2011

Если ваша переменная $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'));
1 голос
/ 28 июля 2011

Не уверен, что я понимаю, о чем вы спрашиваете (ваш код в основном делает то, что вы говорите?) Единственное, что я вижу, пропущено, это разделять запятыми.

<?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
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...