如何从二维数组中提取所有二级值(叶节点)并用逗号连接


How to extract all 2nd level values (leaf nodes) from a 2-dimensional array and join with commas?

如何从数组中获取值列表:

[data] => Array
        (
            [5] => Array
                (
                    [0] => 19
                    [1] => 18
                    [2] => 20
                )
            [6] => Array
                (
                    [0] => 28
                )
        )

预期输出结果字符串为:19,18,20,28

谢谢!

只有一行,没有循环。

echo implode(',', call_user_func_array('array_merge', $data));

在这里试试。

使用以下php代码:

$temp = array();
foreach($data as $k=>$v){
    if(is_array($v)){
        foreach($v as $key=>$value){
            $temp[] = $value;
        }
    }
}
echo implode(',',$temp);

使用以下代码。

$string = '';
foreach($yourarray as $k){
  foreach($k as $l){
     $string. = $l.",";
  }
}

只需在子数组上循环。将值存储到$result数组,然后使用内爆

$result = array();
foreach ($data as $subArray) {
    foreach ($subArray as $value) {
        $result[] = $value;
    }
}
echo implode(',', $result);
$data = array(5 => array(19,18,20), 6 => array(28));
foreach ($data as $array) {
    foreach ($array as $array1) {
        echo $array1.'<br>';
    }
}

试试这个。它将帮助您

由于您希望针对的所有数据都是"叶节点",因此array_walk_recursive()是一个方便调用的函数。

代码:(演示(

$data=[5=>[19,18,20],6=>[28]];
array_walk_recursive($data,function($v){static $first; echo $first.$v; $first=',';});

输出:

19,18,20,28

此方法使用static声明来避免内爆调用,并且在第一次迭代后仅使用前面的逗号迭代echo的调用。(未生成临时数组(

我并没有真正花时间考虑任何边缘情况,但这是一种非正统的方法,它将直接提供所需的输出字符串,而无需循环,甚至无需生成新的临时数组。这是一个整洁的小单行,带有一点正则表达式的魔力。(Regex Demo(它有效地去除了所有的方块&大括号和带尾随冒号的双引号键。

代码:(演示(

$data=[5=>[19,18,20],6=>[28]];
echo preg_replace('/[{}[']]+|"'d+":/','',json_encode($data));

输出:

19,18,20,28

老实说,这是一个有点棘手的解决方案,但我认为SO研究人员看到,通常有多种方法可以实现任何给定的结果,这是件好事。

试试这个。。

foreach($data as $dataArr){
    foreach ($subArray as $value) {
        $res[] = $value;
    }
}
echo implode(',', $res);

只需使用嵌套的foreach语句

$values = array(); 
foreach($dataArray as $key => $subDataArray) {
   foreach($subDataArray as $value) {
       $values[] = $value;
   }
}
$valueString = implode(',', $values);

编辑:添加了完整的解决方案。。