在php中从复杂关联数组中提取数据并放入新数组
我有一个复杂的数组,如下所示:在php中从复杂关联数组中提取数据并放入新数组,php,arrays,associative-array,Php,Arrays,Associative Array,我有一个复杂的数组,如下所示: $input=array( (int) 0 => array( 'XXX' => array( 'id' => '7', 'p_id' => '1', 'address' => '9463', 'arrival_time' => '2014-05-01 03:30:00' ),
$input=array(
(int) 0 => array(
'XXX' => array(
'id' => '7',
'p_id' => '1',
'address' => '9463',
'arrival_time' => '2014-05-01 03:30:00'
),
'YYY' => array(
'id' => '1',
'iden' => '1111',
'name' => 'Tom'
)
),
(int) 1 => array(
'XXX' => array(
'id' => '9',
'p_id' => '2',
'address' => '9469',
'arrival_time' => '2014-05-27 16:43:58'
),
'YYY' => array(
'id' => '2',
'iden' => '2222',
'name' => 'Sam'
)
),
(int) 2 => array(
'XXX' => array(
'id' => '3',
'p_id' => '3',
'address' => '9462',
'arrival_time' => '2014-04-21 14:05:00'
),
'YYY' => array(
'id' => '3',
'iden' => '3333',
'name' => 'James'
)
)
)
我想把它转换成这样
$output=array(
(int) 0 => array(
'name' => 'Tom',
'iden' => '1111',
'address' => '9463'
),
(int) 1 => array(
'name' => 'Sam',
'iden' => '2222',
'address' => '9469'
),
(int) 2 => array(
'name' => 'James',
'iden' => '3333',
'address' => '9462'
)
我写了一些代码来解决这个问题:
foreach ( $input as $key => $value)
{
$output['name']=$input[$key]['YYY']['name'];
$output['iden']=$input[$key]['YYY']['iden'];
$output['address']=$input[$key]['XXX']['address'];
}
不幸的是,它只检索输入数组的最后一个元素
能找个更有经验的人帮忙吗
非常感谢。您在每次迭代中都会覆盖这些值,因为您总是在
$output['name']
中写入这些值
foreach ( $input as $key => $value)
{
$output[$key] = array(
'name' => $value['YYY']['name'],
'iden' => $value['YYY']['iden'],
'address' => $value['XXX']['address']
);
}
这里的键是使用$output[$key]
而不是$output
——这样您将在每次迭代中添加一个新元素
另外,
$input[$key]
和$value
是等效的,所以我使用了较短的变量;) 您在每次迭代中都会覆盖值,因为您总是写入$output['name']
等
foreach ( $input as $key => $value)
{
$output[$key] = array(
'name' => $value['YYY']['name'],
'iden' => $value['YYY']['iden'],
'address' => $value['XXX']['address']
);
}
这里的键是使用$output[$key]
而不是$output
——这样您将在每次迭代中添加一个新元素
另外,
$input[$key]
和$value
是等效的,所以我使用了较短的变量;) 您必须向foreach中的数组添加索引:$output[$key][“name”]= 您必须向foreach中的数组添加索引:$output[$key][“name”]= 在foreach循环中尝试以下操作:-
foreach ( $input as $key=>$value)
{
$output[$key]['name']=$value['YYY']['name'];
$output[$key]['iden']=$value['YYY']['iden'];
$output[$key]['address']=$value['XXX']['address'];
}
在foreach循环中尝试此选项:-
foreach ( $input as $key=>$value)
{
$output[$key]['name']=$value['YYY']['name'];
$output[$key]['iden']=$value['YYY']['iden'];
$output[$key]['address']=$value['XXX']['address'];
}
要定义数组,无需使用
(int)0=>
要定义数组,无需使用(int)0=>