Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何更改矩阵中具有相同宽度的列的行?_Php_Arrays_Matrix_Multidimensional Array - Fatal编程技术网

Php 如何更改矩阵中具有相同宽度的列的行?

Php 如何更改矩阵中具有相同宽度的列的行?,php,arrays,matrix,multidimensional-array,Php,Arrays,Matrix,Multidimensional Array,我的矩阵中的值是 1 2 3 4 5 6 7 8 9 101112 13 14 15 我想将第二列作为行,从第2列开始(与矩阵的宽度和长度相同) 那样 2 5 8 11141 4710 13 3 6 91215 我使用这个函数,我知道它返回相同的矩阵,没有变化 function change($matrix){ $new_matrix =array(); foreach ($matrix as $row => $values) { foreach ($values as $columns=

我的矩阵中的值是

1 2 3

4 5 6

7 8 9

101112

13 14 15

我想将第二列作为行,从第2列开始(与矩阵的宽度和长度相同)

那样

2 5 8

11141

4710

13 3 6

91215

我使用这个函数,我知道它返回相同的矩阵,没有变化

function change($matrix){
$new_matrix =array();
foreach ($matrix as $row => $values) {
foreach ($values as $columns=>$value) {
    $new_matrix[$row][$columns] = $value;
}   
}
return $new_matrix;
}
我可以使用这个函数,但它的结构非常糟糕

function change1($matrix)
{
$list= array(
        array($matrix[0][1],$matrix[1][1],$matrix[2][1]),
        array($matrix[3][1],$matrix[4][1],$matrix[0][0]),
        array($matrix[1][0],$matrix[2][0],$matrix[3][0] ),
        array($matrix[4][0],$matrix[0][2],$matrix[1][2] ),
        array($matrix[2][2],$matrix[3][2],$matrix[4][2] ),
);
return $list;

}

如果您有
PHP5.5+
,只需使用
array\u column()
。然后合并线性数组中的所有列。例如:

$arr1 = array_column($arr, 1);
$arr2 = array_column($arr, 0);
$result = array_merge($arr1, $arr2);
$arr1 = array_column($arr, 2);
$result = array_chunk(array_merge($result, $arr1), 3);
foreach($result as $val){
    foreach($val as $v){
        echo $v . ' ';
    }
    echo '<br />';
}
$arr1=array\u列($arr,1);
$arr2=数组_列($arr,0);
$result=array\u merge($arr1,$arr2);
$arr1=数组_列($arr,2);
$result=array\u chunk(array\u merge($result$arr1),3);
foreach(结果为$val){
外币($val为$v){
回音$v';
}
回声“
”; }
因此您从第二列开始,然后移动到第一列,以第三列结束。。。为什么?:-?
$data = array(
    array(1, 2, 3),
    array(4, 5, 6),
    array(7, 8, 9),
    array(10, 11, 12),
    array(13, 14, 15),
);

array_unshift($data, null);
$newData = call_user_func_array('array_map', $data);
$newData = array_chunk(
    array_merge_recursive($newData[1], $newData[0], $newData[2]),
    3
);
var_dump($newData);