0

反復結果をコンマで区切りたいのですが、配列ではありません。ビューで実行したいので、コードは長くないでください。

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

結果オブジェクトは、Countable、Iterator、SeekableIterator、ArrayAccessを実装します。

4

2 に答える 2

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
?>
于 2011-07-28T17:55:42.923 に答える
1

変数がオブジェクトの場合$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'));
于 2011-07-28T18:06:41.980 に答える