在PHP中重建多维数组
这很基本,但我的问题是: 给定一个数组:在PHP中重建多维数组,php,arrays,dynamic-arrays,Php,Arrays,Dynamic Arrays,这很基本,但我的问题是: 给定一个数组: $a = array( 0 => array('Rate'=> array('type_id'=>1, 'name' => 'Rate_1', 'type'=>'day','value'=>10)), 1 => array('Rate'=> array('type_id'=>1, 'name' => 'Rate_2', 'type'=>'night','value'=>8)), 2
$a = array(
0 => array('Rate'=> array('type_id'=>1, 'name' => 'Rate_1', 'type'=>'day','value'=>10)),
1 => array('Rate'=> array('type_id'=>1, 'name' => 'Rate_2', 'type'=>'night','value'=>8)),
2 => array('Rate'=> array('type_id'=>2, 'name' => 'Rate_3', 'type'=>'day','value'=>7)),
3 => array('Rate'=> array('type_id'=>2, 'name' => 'Rate_4', 'type'=>'nigh','value'=>16)),
4 => array('Rate'=> array('type_id'=>3, 'name' => 'Rate_5', 'type'=>'day','value'=>10))
);
改变它的最有效方式是什么,我们有:
$new_array = array(
[type_id] => array(
[type] => array(
[value]
)
)
)
);
换句话说,我想剥离一些数据(名称,我不需要),并重新组织数组的维度。最后,我将有一个数组,我可以通过$new\u数组['type\u id']['type']['value']]访问值,但不完全确定这是否正是您想要的,但是通过这个数组,您可以通过以下方式访问值
echo$new[TYPE_ID][DAY_OR_NIGHT]代码>
$new = array();
foreach($a AS $b){
$c = $b['Rate'];
$new[$c['type_id']][$c['type']] = $c['value'];
}
在$new
上使用print\r
将为您提供:
Array
(
[1] => Array
(
[day] => 10
[night] => 8
)
[2] => Array
(
[day] => 7
[night] => 16
)
[3] => Array
(
[day] => 10
)
)
由于PHP5.3.0,array_reduce()允许使用数组作为初始值,给定初始数组$a,可以使用以下代码
function my_reducer ($result, $item) {
$result[$item['Rate']['type_id']][$item['Rate']['type']] = $item['Rate']['value'];
return $result;
}
$assoc_arr = array_reduce($a, 'my_reducer', array());
var_dump($assoc_arr);
这是回报
array(3) { [1]=> array(2) {
["day"]=>
int(10)
["night"]=>
int(8) } [2]=> array(2) {
["day"]=>
int(7)
["nigh"]=>
int(16) } [3]=> array(1) {
["day"]=>
int(10) } }
令人惊讶的是,你做这个看起来多么容易!我只是不确定这是否是最有效的方法。在所有元素中循环似乎有点不必要。我想我们可以使用一些内置函数。