我有这个数组,我需要重新安排它才能将它发送到另一个函数..... 这是实际数组,我直接从sql:
array(5) {
[0]=>
array(4) {
["product"]=>
string(4) "product1"
["country"]=>
string(2) "BE"
["total"]=>
string(2) "45"
}
[1]=>
array(4) {
["product"]=>
string(4) "product1"
["country"]=>
string(2) "BG"
["total"]=>
string(2) "31"
}
[2]=>
array(4) {
["product"]=>
string(4) "product1"
["country"]=>
string(2) "CZ"
["total"]=>
string(2) "48"
}
[3]=>
array(4) {
["product"]=>
string(4) "product1"
["country"]=>
string(2) "DE"
["total"]=>
string(2) "58"
}
[4]=>
array(4) {
["product"]=>
string(4) "product1"
["country"]=>
string(2) "DK"
["total"]=>
string(2) "39"
}
}
这是预期的数组:
array(5) {
[0]=>
array(4) {
["product_country"]=> string(4) "product1_BE"
["total"]=>
string(2) "45"
}
[1]=>
array(4) {
["product_country"]=> string(4) "product1_BG"
["total"]=>
string(2) "31"
}
[2]=>
array(4) {
["product_country"]=>string(4) "product1_CZ"
["total"]=>
string(2) "48"
}
[3]=>
array(4) {
["product_country"]=>string(4) "product1_DE"
["total"]=>
string(2) "58"
}
[4]=>
array(4) {
["product_country"]=> string(4) "product1_DK"
["total"]=>
string(2) "39"
}
}
所以,我需要合并colunms“product”+“country” 所以键将更改为“product_country”,值将更改为“Productvalue_countryValue” 然后从数组中删除“country”
我如何才能在简单快速的功能中实现这一目标? 此函数将运行一个位置超过12k的数组。
答案 0 :(得分:4)
您可以遍历数组并将修改放入新数组中:
$array = //your first array
foreach($array as $a) $new_arr[] = array("product_country" => $a["product"]."_".$a["country"], "total" => $a["total"]);
var_dump($new_arr);
答案 1 :(得分:2)
您可以使用array_map
执行此操作。它将遍历您的array
并使用concatProductCountry
回调为数组中的每个项目进行回调。
$input =
array(
array(
"product" => "product1",
"country" => "BE",
"total" => "45"
),
array(
"product" => "product1",
"country" => "BG",
"total" => "31"
)
);
function concatProductCountry($item){
return array(
'product_country' => $item['product'] . '_' . $item['country'],
'total' => $item['total']
);
}
$newArray = array_map('concatProductCountry', $input);
var_dump($newArray);
<强>输出强>
array(2) {
[0]=>
array(2) {
["product_country"]=>
string(11) "product1_BE"
["total"]=>
string(2) "45"
}
[1]=>
array(2) {
["product_country"]=>
string(11) "product1_BG"
["total"]=>
string(2) "31"
}
}
答案 2 :(得分:1)
循环实际数组并根据所需的数组格式创建一个新数组
foreach($actualArray as $k => $val) {
$newArr[$k]['product_country'] = $val['product'] . '_' . $val['country'];
$newArr[$k]["total"] = $val["total"];
}
print_r($newArr);
答案 3 :(得分:1)
您可以通过调用多重排列数组来实现,
<?php
$data[] = array('volume' => 67, 'edition' => 2);
$data[] = array('volume' => 86, 'edition' => 1);
$data[] = array('volume' => 85, 'edition' => 6);
$data[] = array('volume' => 98, 'edition' => 2);
$data[] = array('volume' => 86, 'edition' => 6);
$data[] = array('volume' => 67, 'edition' => 7);
$sort=array_multisort($data);
print_r($data);
?>