我有一个数组,其架构如下:
ConcurrentKafkaListener
而且,我希望合并它,结果如下:
n
我知道我可以遍历它以获得该结果,但有没有更快且准备好的功能来执行此操作?
还有一件事,如果我想生成如下字符串:
Array
(
[0] => stdClass Object
(
[text] => ans1
)
[1] => stdClass Object
(
[text] => ans 2
)
[2] => stdClass Object
(
[text] => ans3
)
)
我能做什么?
答案 0 :(得分:2)
通过在PHP7或更高版本中使用array_column()来完成:
// in your Case, the Column-Key is "text"
$array = array_column($array, 'column-key');
函数将确定列中的值提取到新数组中。
另一个问题是通过使用implode()破坏array_column()的结果来完成的:
$array = implode(',', $array);
答案 1 :(得分:0)
OP的模式表示一个对象数组(参见here),每个对象都带有一个text属性。关于第一个问题,我建议使用 array_map(),如下所示:
<?php
// create array of objects
$arr = [];
$tx = ["ans1","ans2","ans3"];
for ($i = 0, $max = 3; $i < $max; $i++) {
$arr[] = new stdClass;
$arr[$i]->text = $tx[$i];
}
//***** First Answer *******
$nu = array_map( function($e)
{
return $e->text;
}, $arr);
//***** Second Answer *******
$str = join(",",$nu);
// ***** Output *********
print_r( $nu );
print_r( $str );
请参阅demo
array_map()对$ arr的每个元素进行快速的幕后迭代(因为它应用了匿名函数)。它返回一个新数组,其中每个元素都包含每个stdClass对象的text属性的值。虽然另一位受访者建议使用 array_column() 哪一个可能适用于多维数组或对象数组,但遗憾的是,它无法处理PHP 5中的对象数组(参见{{3与功能强大的 array_map()不同。
在回答第二个问题时,可以使用here将$ nu数组值与逗号连接起来,如示例所示。