我有以下数组输出。我想根据税类id组合它们请检查下面的数组和我想要的另一种数组格式是第二个数组
[0] => Array
(
[id] => 1947
[cat_id] => 48
[tax_class_id] => 18
[sku] => 620068-429-S
[qty_ordered] => 5
)
[1] => Array
(
[id] => 1947
[cat_id] => 48
[tax_class_id] => 28
[sku] => 620068-429-M
[qty_ordered] => 9
)
[2] => Array
(
[id] => 1947
[cat_id] => 48
[tax_class_id] => 18
[sku] => 620068-429-L
[qty_ordered] => 9
)
[3] => Array
(
[id] => 1947
[cat_id] => 48
[tax_class_id] => 28
[sku] => 620068-429-XL
[qty_ordered] => 9
)
我想组合那些具有相同tax_class_id的数组,如下所示
[0] => Array(
[0] => Array
(
[id] => 1947
[cat_id] => 48
[tax_class_id] => 18
[sku] => 620068-429-S
[qty_ordered] => 5
)
[1] => Array
(
[id] => 1947
[cat_id] => 48
[tax_class_id] => 18
[sku] => 620068-429-L
[qty_ordered] => 9
)
)
[1] => Array(
[0] => Array
(
[id] => 1947
[cat_id] => 48
[tax_class_id] => 28
[sku] => 620068-429-M
[qty_ordered] => 9
)
[1] => Array
(
[id] => 1947
[cat_id] => 48
[tax_class_id] => 28
[sku] => 620068-429-XL
[qty_ordered] => 9
)
)
我如何获得上述格式的数组。其中子数组具有相同的tax_class_id。
答案 0 :(得分:0)
你可以像这样循环:
$val = [];
$newArray = []
foreach ($products as $product) {
$key = array_search($product['tax_class_id'],$val);
if(!$key) {
$val[] = $product['tax_class_id'];
$key = array_search($product['tax_class_id'],$val);
}
$newArray[$key][] = $product;
}
答案 1 :(得分:0)
您可以组合使用“usort()”并通过循环从生成的usort()数组创建一个新数组。
usort()示例让您入门(基于Sort multi-dimensional array by specific key)
<!DOCTYPE html>
<html>
<body>
<?php
$age = array(
array(
"id"=>"1",
"cat_id"=>"11",
"text_id"=>"43"
),
array(
"id"=>"2",
"cat_id"=>"22",
"text_id"=>"22"
),
array(
"id"=>"3",
"cat_id"=>"33",
"text_id"=>"43"
),
array(
"id"=>"4",
"cat_id"=>"44",
"text_id"=>"43"
),
array(
"id"=>"5",
"cat_id"=>"55" ,
"text_id"=>"22"
)
);
function cmp($a, $b)
{
return strcmp($a['text_id'], $b['text_id']);
}
usort($age, "cmp");
// Just to show that the array has been sorted
echo '<pre>';
print_r($age);
echo '</pre>';
// Create new array using loops here
//......
?>
</body>
</html>
答案 2 :(得分:0)
解....
foreach($array as $row){
$new[$row['tax_class_id']][] = $row;
}
echo "<pre>";print_r($new);
结果
Array
(
[18] => Array
(
[0] => Array
(
[id] => 1947
[cat_id] => 48
[tax_class_id] => 18
[sku] => 620068-429-S
[qty_ordered] => 5
)
[1] => Array
(
[id] => 1947
[cat_id] => 48
[tax_class_id] => 18
[sku] => 620068-429-L
[qty_ordered] => 9
)
)
[28] => Array
(
[0] => Array
(
[id] => 1947
[cat_id] => 48
[tax_class_id] => 28
[sku] => 620068-429-M
[qty_ordered] => 9
)
[1] => Array
(
[id] => 1947
[cat_id] => 48
[tax_class_id] => 28
[sku] => 620068-429-XL
[qty_ordered] => 9
)
)
)