如何使用从 stdClass 对象数组中内翻列?

2022-08-30 16:52:27

我有一个对象数组,我想使用所有这些对象的一个特定字段构建一个逗号分隔的列表。我的数组如下所示:stdClassstdClass

$obj1 = stdClass Object ( [foo] => 4 [bar] => 8 [foo-bar] => 15 );
$obj2 = stdClass Object ( [foo] => 16 [bar] => 23 [foo-bar] => 42 );
$obj3 = stdClass Object ( [foo] => 76 [bar] => 79 [foo-bar] => 83 );

$a = array(1=>$obj1 , 2=>$obj2 , 3=>$obj3);

我想在该数组中的所有对象上崩溃以创建一个逗号分隔的列表。因此,期望的结果是:foostdClass

4,16,76

有没有办法用内爆(或其他一些神秘函数)来做到这一点,而不必通过循环来放置这个对象数组?


答案 1

您可以使用 array_map() 和 ...implode()

$a = array_map(function($obj) { return $obj->foo; }, 
               array(1=>$obj1 , 2=>$obj2 , 3=>$obj3));

$a = implode(", ", $a);

答案 2

在 PHP 7.0+ 中,您可以使用它。array_column

echo implode(',', array_column($a, 'foo'));