假设我有一个 Person 对象数组,并且这些 person 对象具有属性 firstName、lastName 和 age。现在假设我想要一个包含所有这些人员对象的名字的数组。如何将此 Person 对象数组转换为名字字符串数组?
是否有一些数组函数的组合我可以用来做它或者我只是使用一个 for 循环并创建一个新数组?
假设我有一个 Person 对象数组,并且这些 person 对象具有属性 firstName、lastName 和 age。现在假设我想要一个包含所有这些人员对象的名字的数组。如何将此 Person 对象数组转换为名字字符串数组?
是否有一些数组函数的组合我可以用来做它或者我只是使用一个 for 循环并创建一个新数组?
您可以使用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)
您可以遍历 person 对象数组,然后遍历 person 对象并从 firstname 属性创建数组。看一个例子,巧合的是用了一个person类作为例子:
一个简单的循环将是最好的:
$persons = getPersons();
$firstnames = array();
foreach($persons as $person) {
$firstnames[] = $person->getFirstName();
}
您必须遍历对象数组。要么使用 normalforeach
要么使用array_map
.
function get_first_name($person)
{
return $person->firstName;
}
$firstNames = array_map('get_first_name', $people);