Php 展平多维数组
(请不要介意标题,我不知道如何正确命名)我目前有一个多维数组,看起来像这样:Php 展平多维数组,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,(请不要介意标题,我不知道如何正确命名)我目前有一个多维数组,看起来像这样: Array ( [0] => Array ( [French Navy] => Array ( [84] => 2XL [quantity] => 999 [product_colour_sizes_id] => 36786
Array
(
[0] => Array
(
[French Navy] => Array
(
[84] => 2XL
[quantity] => 999
[product_colour_sizes_id] => 36786
[product_colour_sizes_product_id] => 1276
[product_colour_sizes_option_value_colour_id] => 182
[product_colour_sizes_option_value_size_id] => 80
[83] => XL
[82] => L
[81] => M
[80] => S
)
)
[1] => Array
(
[Classic Red] => Array
(
[84] => 2XL
[quantity] => 999
[product_colour_sizes_id] => 36780
[product_colour_sizes_product_id] => 1276
[product_colour_sizes_option_value_colour_id] => 178
[product_colour_sizes_option_value_size_id] => 80
[83] => XL
[82] => L
[81] => M
[80] => S
)
)
[2] => Array
(
[Burgundy] => Array
(
[84] => 2XL
[quantity] => 999
[product_colour_sizes_id] => 36774
[product_colour_sizes_product_id] => 1276
[product_colour_sizes_option_value_colour_id] => 106
[product_colour_sizes_option_value_size_id] => 80
[83] => XL
[82] => L
[81] => M
[80] => S
)
)
[3] => Array
(
[Bright Royal] => Array
(
[84] => 2XL
[quantity] => 999
[product_colour_sizes_id] => 36768
[product_colour_sizes_product_id] => 1276
[product_colour_sizes_option_value_colour_id] => 176
[product_colour_sizes_option_value_size_id] => 80
[83] => XL
[82] => L
[81] => M
[80] => S
)
)
[4] => Array
(
[Bottle Green] => Array
(
[84] => 2XL
[quantity] => 999
[product_colour_sizes_id] => 36762
[product_colour_sizes_product_id] => 1276
[product_colour_sizes_option_value_colour_id] => 86
[product_colour_sizes_option_value_size_id] => 80
[83] => XL
[82] => L
[81] => M
[80] => S
)
)
[5] => Array
(
[Black] => Array
(
[84] => 2XL
[quantity] => 999
[product_colour_sizes_id] => 36756
[product_colour_sizes_product_id] => 1276
[product_colour_sizes_option_value_colour_id] => 75
[product_colour_sizes_option_value_size_id] => 80
[83] => XL
[82] => L
[81] => M
[80] => S
)
)
)
Array
(
[product_colour_sizes_id] => 36790
[product_colour_sizes_product_id] => 1276
[product_colour_sizes_option_value_colour_id] => 182
[product_colour_sizes_option_value_size_id] => 84
[quantity] => 999
[product_colour_sizes_name_sizes1] => 2XL => [id1] => 83
[product_colour_sizes_name_sizes2] => L => [id2] => 84
[product_colour_sizes_name_sizes3] => S => [id3] => 85
[product_colour_sizes_name_sizes4] => M => [id4] => 86
[product_colour_sizes_name_colours] => French Navy
)
我想做的是,将每次迭代减少到它自己的数组中,这样我就可以以名称的形式访问键值(如果有意义的话)。大概是这样的:
Array
(
[0] => Array
(
[French Navy] => Array
(
[84] => 2XL
[quantity] => 999
[product_colour_sizes_id] => 36786
[product_colour_sizes_product_id] => 1276
[product_colour_sizes_option_value_colour_id] => 182
[product_colour_sizes_option_value_size_id] => 80
[83] => XL
[82] => L
[81] => M
[80] => S
)
)
[1] => Array
(
[Classic Red] => Array
(
[84] => 2XL
[quantity] => 999
[product_colour_sizes_id] => 36780
[product_colour_sizes_product_id] => 1276
[product_colour_sizes_option_value_colour_id] => 178
[product_colour_sizes_option_value_size_id] => 80
[83] => XL
[82] => L
[81] => M
[80] => S
)
)
[2] => Array
(
[Burgundy] => Array
(
[84] => 2XL
[quantity] => 999
[product_colour_sizes_id] => 36774
[product_colour_sizes_product_id] => 1276
[product_colour_sizes_option_value_colour_id] => 106
[product_colour_sizes_option_value_size_id] => 80
[83] => XL
[82] => L
[81] => M
[80] => S
)
)
[3] => Array
(
[Bright Royal] => Array
(
[84] => 2XL
[quantity] => 999
[product_colour_sizes_id] => 36768
[product_colour_sizes_product_id] => 1276
[product_colour_sizes_option_value_colour_id] => 176
[product_colour_sizes_option_value_size_id] => 80
[83] => XL
[82] => L
[81] => M
[80] => S
)
)
[4] => Array
(
[Bottle Green] => Array
(
[84] => 2XL
[quantity] => 999
[product_colour_sizes_id] => 36762
[product_colour_sizes_product_id] => 1276
[product_colour_sizes_option_value_colour_id] => 86
[product_colour_sizes_option_value_size_id] => 80
[83] => XL
[82] => L
[81] => M
[80] => S
)
)
[5] => Array
(
[Black] => Array
(
[84] => 2XL
[quantity] => 999
[product_colour_sizes_id] => 36756
[product_colour_sizes_product_id] => 1276
[product_colour_sizes_option_value_colour_id] => 75
[product_colour_sizes_option_value_size_id] => 80
[83] => XL
[82] => L
[81] => M
[80] => S
)
)
)
Array
(
[product_colour_sizes_id] => 36790
[product_colour_sizes_product_id] => 1276
[product_colour_sizes_option_value_colour_id] => 182
[product_colour_sizes_option_value_size_id] => 84
[quantity] => 999
[product_colour_sizes_name_sizes1] => 2XL => [id1] => 83
[product_colour_sizes_name_sizes2] => L => [id2] => 84
[product_colour_sizes_name_sizes3] => S => [id3] => 85
[product_colour_sizes_name_sizes4] => M => [id4] => 86
[product_colour_sizes_name_colours] => French Navy
)
我用于生成第一个数组的当前php代码如下:
$colours = array();
$sizes = array();
$color = "";
$id = "";
$quantity = "";
//$count = count($colours);
foreach($product_combinations as $key => $product_combination){
if($key > -1){
if(
$product_combinations[$key+1]['product_colour_sizes_name_colours']
== $product_combinations[$key]['product_colour_sizes_name_colours']
){
$color = $product_combinations[$key]['product_colour_sizes_name_colours'];
$id = $product_combinations[$key]['product_colour_sizes_option_value_size_id'];
$sizes[$id] = $product_combinations[$key]['product_colour_sizes_name_sizes'];
$quantity = $product_combinations[$key]['quantity'];
$sizes['quantity'] = $quantity;
/* Dont forget theses*/
$sizes['product_colour_sizes_id'] = $product_combination['product_colour_sizes_id'];
$sizes['product_colour_sizes_product_id'] = $product_combination['product_colour_sizes_product_id'];
$sizes['product_colour_sizes_option_value_colour_id'] = $product_combination['product_colour_sizes_option_value_colour_id'];
$sizes['product_colour_sizes_option_value_size_id'] =$product_combination['product_colour_sizes_option_value_size_id'];
} else {
array_push($colours,
array(
$color => $sizes
));
unset($sizes);
}
}
}
如何执行此操作?下面是将输入数组转换为一维数组的代码:
echo '<pre>';
$new_product_combinations = array();
foreach ($product_combinations as $k => $v) {
$array = array();
foreach ($v as $k1 => $v1) {
$i = 1;
foreach ($v1 as $k2 => $v2) {
if (is_int($k2)) {
$j = $i++;
$array['product_colour_sizes_name_sizes' . $j] = $v2;
$array['id' . $j] = $k2;
} else {
$array[$k2] = $v2;
}
}
$array['product_colour_sizes_name_colours'] = $k1;
}
print_r($array); // output single combination
$new_product_combinations[] = $array;
}
print_r($new_product_combinations);
希望这能对你有所帮助。你能详细说明你想做什么吗?将所有这些数组合并为一个?如果是,在什么条件下?将多维数组转换为一维数组的术语是“展平”,即展平多维数组。您所需的结构没有意义,
product\u color\u size\u name\u sizes1
和其他类似的术语仍然需要在内部生成另一个数组