反復結果をコンマで区切りますが、配列ではありません。私はビューでそれをやりたいので、コードは長くはならない。PHPを使用した最後の項目
<?php foreach ($roles as $role): ?>
<?php echo $role->title; ?>
<?php endforeach; ?>
結果オブジェクトはCountable、Iterator、SeekableIterator、ArrayAccessを実装します。
反復結果をコンマで区切りますが、配列ではありません。私はビューでそれをやりたいので、コードは長くはならない。PHPを使用した最後の項目
<?php foreach ($roles as $role): ?>
<?php echo $role->title; ?>
<?php endforeach; ?>
結果オブジェクトはCountable、Iterator、SeekableIterator、ArrayAccessを実装します。
あなたの質問(あなたのコードは基本的にあなたの言うことをするようです)を理解していませんか?唯一の欠けているのはコンマで区切られています。
<?php
$first=true;
foreach ($roles as $role) {
if (!$first) echo ",";
$first=false;
echo $role->title;
}
?>
またはキャッシュが(文字列の長さが長すぎるではありません)OKの場合:
<?php
$output="";
foreach ($roles as $role) {
$output.=$role->title.",";
}
echo substr($output,0,-1);//Trim last comma
?>
あなた$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'));