php concat数组值转换为新数组php

时间:2018-07-19 04:52:24

标签: php arrays multidimensional-array

我有一个数组,其中的数组表示数据库中的值。

db表中有100多个列,因此实际计数远远高于下面示例中的6个值(子数组(数组中的数组)索引为0-5)。

列在子数组的每个索引中,行在主数组的每个索引中。

这是我的带有子阵列的主要阵列:

Array
(
    [0] => Array
        (
            [0] => N
            [1] => N
            [2] => Y
            [3] => Y
            [4] => Y
            [5] => Y
)
 [1] => Array
        (
            [0] => N
            [1] => N
            [2] => Y
            [3] => Y
            [4] => N
            [5] => Y
)
[2] => Array
        (
            [0] => N
            [1] => N
            [2] => Y
            [3] => Y
            [4] => N
            [5] => Y
)
[3] => Array
        (
            [0] => Y
            [1] => Y
            [2] => Y
            [3] => Y
            [4] => Y
            [5] => Y
)

我需要做的是将每个子索引的所有值合并到一个数组中,如下所示:

Array
( 
            [0] => N,N,N,Y
            [1] => N,N,N,Y
            [2] => Y,Y,Y,Y
            [3] => Y,Y,Y,Y
            [4] => Y,N,N,Y
            [5] => Y,Y,Y,Y
)

列数(子索引)总是相同,但是行数(索引)却不同。

4 个答案:

答案 0 :(得分:2)

这个想法是按列获取数据,很幸运,有一个内置函数。其array_column

因此,首先获取列数,然后简单地使用for循环。然后,只需使用implode并将其分配到新容器中即可:

$new = array(); // container
$count = count($arr[0]); // get the number of colums
for ($i = 0; $i < $count; $i++) {
    // get the data by column number ($i), then implode and push inside
    $new[] = implode(',', array_column($arr, $i));
}

这是一个示例output

答案 1 :(得分:0)

我假设您已将$column定义为数据库表中的列总数。使用array_column根据列键获取值。

$result = array();
for ($i = 0; $i < $column; $i++) {
    $res = array_column($arr, $i);
    $result[] = implode(",", $res);
}

有关array_column功能的更多信息,请选中此link

哦,只是告诉您array_column函数仅适用于PHP 5.5及更高版本。

答案 2 :(得分:0)

检查这是否是您想要的

$arr = array(//your array); 
$newArr = array(); //data wil lbe saved here
foreach($arr as $arr_one){
    $string = "";
    foreach($arr_one as $subArr){
        $string.=$subArr.",";
    }
    array_push($newArr,rtrim($string,','));
}

var_dump($newArr);

答案 3 :(得分:0)

避免使用显式循环,例如forwhile。使用array_map(它可以遍历数组的可变数目):

$result = array_map(function (...$column) {
    return implode(',', $column);
}, ...$array);

这里是the demo

linear algebra中,这称为矩阵的transpose