将PHP数组合并为一个

时间:2017-07-13 08:30:53

标签: php arrays

我有一个数组,其架构如下:

ConcurrentKafkaListener

而且,我希望合并它,结果如下:

n

我知道我可以遍历它以获得该结果,但有没有更快且准备好的功能来执行此操作?

还有一件事,如果我想生成如下字符串:

            Array
(
[0] => stdClass Object
    (
        [text] => ans1
    )

[1] => stdClass Object
    (
        [text] => ans 2
    )

[2] => stdClass Object
    (
        [text] => ans3
    )

)

我能做什么?

2 个答案:

答案 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数组值与逗号连接起来,如示例所示。