我有一个这样的数组:
Array ( [0] => Array
([category_name] => Operating System
[sub_category_name] => Windows 8)
[1] => Array
([category_name] => Operating System
[sub_category_name] => Linux)
[2] => Array
([category_name] => Mobile
[sub_category_name] => Nokia))
我想像这样自定义:
Array('Operating System' => 'Windows 8', 'Operating System' => 'Linux', 'Mobile' => 'Nokia')
提前致谢。任何帮助或建议都会有很大的帮助......
答案 0 :(得分:2)
$n = array();
$i = 0;
array_walk($arr, function($subArr) {
global $n;
global $i;
$n[$subArr['category_name'] . $i] = $subArr['sub_category_name'];
$i++;
});
var_dump($n); // array(3) { ["Operating System0"]=> string(9) "Windows 8" ["Operating System1"]=> string(5) "Linux" ["Mobile2"]=> string(5) "Nokia" }
注意:作为OP更新的问题,我也更新了答案,虽然在同一个数组中不允许使用相同的键,所以我在新数组的键末尾添加了计数器。 / p>
答案 1 :(得分:1)
这可能会有所帮助
$result = array();
foreach($firstArray as $row) {
$result[$row['category_name']] = $row['sub_category_name'];
}
如果要合并重复键,可以像这样写
$result = array();
foreach($firstArray as $row) {
if(isset($result[$row['category_name']])) {
if(!is_array($result[$row['category_name']])) {
$tmp = array();
$tmp[] = $result[$row['category_name']];
$result[$row['category_name']] = $tmp;
}
$result[$row['category_name']][] = $row['sub_category_name'];
} else
$result[$row['category_name']] = $row['sub_category_name'];
}
答案 2 :(得分:1)
PHP does not allow duplicate keys for same array.
If you want to use same keys for multiple values then you should use multidimensional array as mentioned in below example.
As per your above code below is your array
$array = array("0" => array("category_name" => "Operating System", "sub_category_name" => "Windows 8"),
"1" => array("category_name" => "Operating System", "sub_category_name" => "Linux"),
"2" => array("category_name" => "Mobile", "sub_category_name" => "Nokia"));
you can merge the array and for same key use multidimensional array
$new_array = array();
foreach ($array as $arr) {
$arrmerge = array($arr['category_name'] => $arr['sub_category_name']);
if (array_key_exists($arr['category_name'], $new_array)) {
$arrmerge[$arr['category_name']] = array($new_array[$arr['category_name']], $arr['sub_category_name']);
}
$new_array = array_merge($new_array, $arrmerge);
}
print_r($new_array);
I hope this will help you.