2012-09-27 4 views
1

Person 객체의 배열이 있고 person 객체의 속성이 firstName, lastName 및 age라고 가정 해 보겠습니다. 이제이 모든 사람 객체의 첫 번째 이름 배열을 원한다고 가정 해 봅시다. 이 Person 객체의 배열을 firstname 문자열의 배열로 변환하려면 어떻게해야합니까?PHP에서 개체의 단일 속성의 배열로 개체의 배열을 변환하는 방법?

내가 할 수있는 배열 함수의 조합이 있습니까? 아니면 for 루프를 사용하고 새로운 배열을 만드나요?

답변

4

당신은 array_map

class Person 
{ 
    public $firstName ; 
    public $lastName ; 
    public $age ; 

    function __construct($firstName,$lastName,$age) 
    { 
     $this->firstName = $firstName ; 
     $this->lastName = $lastName ; 
     $this->age = $age ; 
    } 
} 

$list = array(); 
$list[] = new Person("John", "Smith", 22); 
$list[] = new Person("Jon", "Doe", 19); 
$list[] = new Person("Jane", "Stack", 21); 

$lastNames = array_map(function($var){return $var->lastName ; } ,$list); 
var_dump($lastNames); 

출력을 사용할 수 있습니다

array 
    0 => string 'Smith' (length=5) 
    1 => string 'Doe' (length=3) 
    2 => string 'Stack' (length=5) 
+0

감사합니다. – User

0

person 객체의 배열을 반복하고 person 객체를 반복하여 firstname 속성에서 배열을 만들 수 있습니다. 우연히 예를 들어 사람의 클래스를 사용하는 예를 들어, 참조 :

http://www.tuxradar.com/practicalphp/6/7/6

0

간단한 루프는 가장 좋은 것입니다 :

$persons = getPersons(); 

$firstnames = array(); 

foreach($persons as $person) { 
    $firstnames[] = $person->getFirstName();  
} 
0

개체 배열을 반복해야합니다. 보통 foreach을 사용하거나 array_map을 사용하십시오.

function get_first_name($person) 
{ 
    return $person->firstName; 
} 
$firstNames = array_map('get_first_name', $people); 
관련 문제