在php中更改数组结构最好使用特殊键
我需要对数组做些什么,但我不知道怎么做。 我有这个阵列:在php中更改数组结构最好使用特殊键,php,arrays,Php,Arrays,我需要对数组做些什么,但我不知道怎么做。 我有这个阵列: $arr = array( "0" => array("var_id" => 11, "var_name" => 'london', "var_price" => 250), "1" => array("var_id" => 22, "var_name" => 'moscow', "var_price" => 320), "2" => arra
$arr = array(
"0" => array("var_id" => 11, "var_name" => 'london', "var_price" => 250),
"1" => array("var_id" => 22, "var_name" => 'moscow', "var_price" => 320),
"2" => array("var_id" => 33, "var_name" => 'chicago', "var_price" => 99),
"3" => array("var_id" => 11, "var_name" => 'london', "var_price" => 140),
"4" => array("var_id" => 44, "var_name" => 'amsterdam', "var_price" => 555),
"5" => array("var_id" => 33, "var_name" => 'chicago', "var_price" => 663),
"6" => array("var_id" => 33, "var_name" => 'chicago', "var_price" => 777)
);
我希望能够更改数组结构在本例中,我需要新的数组,其中只有4个主要城市:伦敦、莫斯科、芝加哥、阿姆斯特丹唯一的键将是varu_id,其中的价格数组如下:
$arr_new = array(
"0" => array("var_id" => 11, "var_name" => 'london', "var_price" => array("0" => 250,"1" => 140)),
"1" => array("var_id" => 22, "var_name" => 'moscow', "var_price" => array("0" => 320)),
"2" => array("var_id" => 33, "var_name" => 'chicago', "var_price" => array("0" => 99,"1" => 663,"2" => 777)),
"3" => array("var_id" => 44, "var_name" => 'amsterdam', "var_price" => array("0" => 555))
);
$array = array(
"0" => array("var_id" => 11, "var_name" => 'london', "var_price" => 250),
"1" => array("var_id" => 22, "var_name" => 'moscow', "var_price" => 320),
"2" => array("var_id" => 33, "var_name" => 'chicago', "var_price" => 99),
"3" => array("var_id" => 11, "var_name" => 'london', "var_price" => 140),
"4" => array("var_id" => 44, "var_name" => 'amsterdam', "var_price" => 555),
"5" => array("var_id" => 33, "var_name" => 'chicago', "var_price" => 663),
"6" => array("var_id" => 33, "var_name" => 'chicago', "var_price" => 777)
);
$final_arr = [];
foreach ($array as $key => $arr) {
$final_arr[$arr['var_name']]['var_name'] = $arr['var_name'];
$final_arr[$arr['var_name']]['var_id'] = $arr['var_id'];
$final_arr[$arr['var_name']]['var_price'][] = $arr['var_price'];
}
var_dump(array_values($final_arr));
array:4 [
0 => array:2 [
"var_id" => 11
"var_price" => array:2 [
0 => 250
1 => 140
]
]
1 => array:2 [
"var_id" => 22
"var_price" => array:1 [
0 => 320
]
]
2 => array:2 [
"var_id" => 33
"var_price" => array:3 [
0 => 99
1 => 663
2 => 777
]
]
3 => array:2 [
"var_id" => 44
"var_price" => array:1 [
0 => 555
]
]
]
如果有任何php类或函数可以这样做(我更喜欢类)。
这是我做的一个很好的截图:
您可以使用
foreach
循环这样做:
$arr_new = array(
"0" => array("var_id" => 11, "var_name" => 'london', "var_price" => array("0" => 250,"1" => 140)),
"1" => array("var_id" => 22, "var_name" => 'moscow', "var_price" => array("0" => 320)),
"2" => array("var_id" => 33, "var_name" => 'chicago', "var_price" => array("0" => 99,"1" => 663,"2" => 777)),
"3" => array("var_id" => 44, "var_name" => 'amsterdam', "var_price" => array("0" => 555))
);
$array = array(
"0" => array("var_id" => 11, "var_name" => 'london', "var_price" => 250),
"1" => array("var_id" => 22, "var_name" => 'moscow', "var_price" => 320),
"2" => array("var_id" => 33, "var_name" => 'chicago', "var_price" => 99),
"3" => array("var_id" => 11, "var_name" => 'london', "var_price" => 140),
"4" => array("var_id" => 44, "var_name" => 'amsterdam', "var_price" => 555),
"5" => array("var_id" => 33, "var_name" => 'chicago', "var_price" => 663),
"6" => array("var_id" => 33, "var_name" => 'chicago', "var_price" => 777)
);
$final_arr = [];
foreach ($array as $key => $arr) {
$final_arr[$arr['var_name']]['var_name'] = $arr['var_name'];
$final_arr[$arr['var_name']]['var_id'] = $arr['var_id'];
$final_arr[$arr['var_name']]['var_price'][] = $arr['var_price'];
}
var_dump(array_values($final_arr));
array:4 [
0 => array:2 [
"var_id" => 11
"var_price" => array:2 [
0 => 250
1 => 140
]
]
1 => array:2 [
"var_id" => 22
"var_price" => array:1 [
0 => 320
]
]
2 => array:2 [
"var_id" => 33
"var_price" => array:3 [
0 => 99
1 => 663
2 => 777
]
]
3 => array:2 [
"var_id" => 44
"var_price" => array:1 [
0 => 555
]
]
]
预期输出如下所示:
$arr_new = array(
"0" => array("var_id" => 11, "var_name" => 'london', "var_price" => array("0" => 250,"1" => 140)),
"1" => array("var_id" => 22, "var_name" => 'moscow', "var_price" => array("0" => 320)),
"2" => array("var_id" => 33, "var_name" => 'chicago', "var_price" => array("0" => 99,"1" => 663,"2" => 777)),
"3" => array("var_id" => 44, "var_name" => 'amsterdam', "var_price" => array("0" => 555))
);
$array = array(
"0" => array("var_id" => 11, "var_name" => 'london', "var_price" => 250),
"1" => array("var_id" => 22, "var_name" => 'moscow', "var_price" => 320),
"2" => array("var_id" => 33, "var_name" => 'chicago', "var_price" => 99),
"3" => array("var_id" => 11, "var_name" => 'london', "var_price" => 140),
"4" => array("var_id" => 44, "var_name" => 'amsterdam', "var_price" => 555),
"5" => array("var_id" => 33, "var_name" => 'chicago', "var_price" => 663),
"6" => array("var_id" => 33, "var_name" => 'chicago', "var_price" => 777)
);
$final_arr = [];
foreach ($array as $key => $arr) {
$final_arr[$arr['var_name']]['var_name'] = $arr['var_name'];
$final_arr[$arr['var_name']]['var_id'] = $arr['var_id'];
$final_arr[$arr['var_name']]['var_price'][] = $arr['var_price'];
}
var_dump(array_values($final_arr));
array:4 [
0 => array:2 [
"var_id" => 11
"var_price" => array:2 [
0 => 250
1 => 140
]
]
1 => array:2 [
"var_id" => 22
"var_price" => array:1 [
0 => 320
]
]
2 => array:2 [
"var_id" => 33
"var_price" => array:3 [
0 => 99
1 => 663
2 => 777
]
]
3 => array:2 [
"var_id" => 44
"var_price" => array:1 [
0 => 555
]
]
]