2012-03-13 5 views
-1

배열의 각 객체에 대한 속성을 신속하고 깨끗하게 출력하는 방법은 무엇입니까? 예를 들면 : 나는 루프에 사용 좋아하지 않는다배열의 모든 객체에 대해 하나의 속성을 출력합니다.

object->name; 

과 출력을 문자열로

name1,name2,name3 

같은 :

$array=[object1,object2,object3]; 

는 지금은 각 개체의 이름을 얻을 필요 , 거기에 PHP에서 빠른 방법을 추측, 제발 조언. 감사.

+0

"For 루프를 사용하는 것을 좋아하지 않습니다"=> 너무 현지화 됨 – Gordon

+1

가능한 복제본 [개체 배열에서 속성 추출] (http://stackoverflow.com/questions/1118994/php-extracting-a-) object-of-array-of-objects) – Gordon

+0

[배열의 각 객체에서 객체 속성을 얻는 방법] 가능한 중복 (http://stackoverflow.com/questions/6462150/how-to-get-object- property-from-each-object-in-an-array) – Gordon

답변

4

array_map을 사용하면 개체 배열을 속성 값 배열에 투영 할 수 있습니다. 그 implode 당신에게 값의 좋은 작은 문자열을 만들 수 있습니다 후 : 당신이 dnymic 싶은 경우

$array = [ /* ... */ ]; 
echo implode(',', array_map(function($el) { return $el->name; }, $array)); 
+0

좋은 대안이지만, 루프보다 더 빠른 방법은 없을까요? –

+1

@StevenDeGroote : 우선, 더 빠르다는 질문에 언급되지 않았습니다. 내가 말했듯이, 그것이 더 빨라지는지 아닌지 확실하지는 않지만 필자는 어떻게 빨리 * 될 수 있는지를 알 수있다 :'array_map'은 C로 직접 구현되고 foreach는 PHP의 일부로 구현된다. VM은 (일반적으로) 훨씬 느려야합니다. 반면에 나는'foreach'가 너무 많이 최적화되어 있으므로 측정하지 않고 말할 수 없다고 기대할 것입니다. – Jon

+0

이것은 내가 찾고있는 코드 줄입니다. – bingjie2680

0

당신은

$str = $array[0]->name . ',' . 
$array[1]->name . ',' . 
$array[2]->name; 

같은 뜻, 음, 당신은 반복해야 :

$str = ''; 
foreach($array AS $object){ 
    $str .= ',' . $object->name; 
} 
1

음, foreach 루프로 할 수 있습니다.

foreach ($array as $value) { 
     $value->name; 
} 

배열에 몇 개의 요소가 있는지 모르는 경우 루프없이 정렬 할 수있는 방법을 모르겠습니다.

1

내 세상에! 루프의 문제점은 무엇입니까? 가장 기본적인 프로그래밍 구조 중 하나입니다.

array_walk($array, function($item) { 
    echo $item->name . ","; 
}); 

나 :

물론, 대신 폐쇄 사용할 수

echo implode(",", array_map(function($item) { 
    return $item->name; 
}, $array)); 

을하지만보다 정말 쉽게 이해하는 것입니다 다음을 극복하십시오 지금

foreach($array as $item) { 
    echo $item->name . ","; 
} 

사실 프로그래밍에 루프가 필요합니다. 그들 중 많은!

관련 문제