2011-07-28 6 views
0

반복 결과를 쉼표로 구분하고 싶지만 배열이 아닙니다. 뷰에서이를 수행하고 싶기 때문에 코드가 길어서는 안됩니다.PHP를 사용한 반복의 마지막 항목

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

결과 개체는 Countable, Iterator, SeekableIterator, ArrayAccess를 구현합니다.

답변

1

당신이 묻는 것 (기본적으로 당신의 코드는 당신이하는 말을하는 것처럼 보입니다)을 이해하지 못합니다. 누락 된 부분은 쉼표로 구분됩니다. 당신의 $roles 변수가 객체 속성 값의 배열을 반환하는 방법을 쓰기입니다

<?php 
$output=""; 
foreach ($roles as $role) { 
    $output.=$role->title.","; 
} 
echo substr($output,0,-1);//Trim last comma 
?> 
1

경우

<?php 
$first=true; 
foreach ($roles as $role) { 
    if (!$first) echo ","; 
    $first=false; 
    echo $role->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'));