Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/251.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_Multidimensional Array - Fatal编程技术网

如何在PHP中将二维数组转换为三维数组?

如何在PHP中将二维数组转换为三维数组?,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,我有下面的二维数组 $data = [ ['category'=>1,'attribute'=>1,'option'=>1], ['category'=>1,'attribute'=>1,'option'=>2], ['category'=>1,'attribute'=>2,'option'=>3], ['category'=>1,'attribute'=>2,'option'=>4],

我有下面的二维数组

$data = [
    ['category'=>1,'attribute'=>1,'option'=>1],
    ['category'=>1,'attribute'=>1,'option'=>2],
    ['category'=>1,'attribute'=>2,'option'=>3],
    ['category'=>1,'attribute'=>2,'option'=>4],
    ['category'=>2,'attribute'=>3,'option'=>5],
    ['category'=>2,'attribute'=>3,'option'=>6],
    ['category'=>2,'attribute'=>4,'option'=>7],
    ['category'=>2,'attribute'=>4,'option'=>8]
];
我想把这个数组转换成三维,根据父子值,像下面的数组一样

$data = [
    '1'=>[
        '1' => [
            '1' => 1,
            '2' => 2        
        ],
        '2' => [
            '3' => 3,
            '4' => 4        
        ]
    ],
    '2'=>[
        '3' => [
            '5' => 5,
            '6' => 6        
        ],
        '4' => [
            '7' => 7,
            '8' => 8        
        ]
    ],
];
在第一个迭代器中,是迭代两次的“category”键的值。第二次迭代用于“属性”,第三次迭代用于“选项”,迭代8次

另外:如果我想做相反的事情呢。我有第二个数组,想在第一个数组中转换

谢谢

$arr = [
  ['category'=>1,'attribute'=>1,'option'=>1],
  ['category'=>1,'attribute'=>1,'option'=>2],
  ['category'=>1,'attribute'=>2,'option'=>3],
  ['category'=>1,'attribute'=>2,'option'=>4],
  ['category'=>2,'attribute'=>3,'option'=>5],
  ['category'=>2,'attribute'=>3,'option'=>6],
  ['category'=>2,'attribute'=>4,'option'=>7],
  ['category'=>2,'attribute'=>4,'option'=>8],
];

$newArr = [];

foreach($arr as $arrRow) {
    $newArr[$arrRow['category']][$arrRow['attribute']][$arrRow['option']] = $arrRow['option'];
}

带有数字的数组键字符串将在PHP中转换为int。

感谢您的帮助。如果我想倒过来怎么办?我有第二个三维数组,想转换成第一个数组。