为数组中的所有对象输出一个属性


output one property for all objects in array

为数组中的每个对象输出属性的快速而干净的方法是什么。例如:

$array=[object1,object2,object3];

现在我只需要得到每个对象的名称:

object->name;

并作为类似的字符串输出

name1,name2,name3

我不喜欢使用for循环,我想php中有一种快速的方法,请建议。谢谢

使用array_map将对象数组投影到属性值数组中;之后,implode可以为您生成一个漂亮的小字符串值:

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

好吧,您可以使用foreach循环:

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

如果您不知道数组中有多少元素,我不知道在没有任何循环的情况下如何做到这一点。

天哪!循环有什么问题?它是最基本的编程构造之一。

当然,您可以使用闭包:

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 . ",";
}

现在,请忽略编程中需要循环的事实。他们很多!

你是说像

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

如果你想让它是dnymic的,那么,你必须迭代:

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