>我有一个生成的数组采用这种格式,并希望生成第二个数组以适应需要特定格式的文件
这是我拥有的数组:
(int) 0 => array(
[Service] => Array
(
[id] => 6948229
[document] => Array
(
[number] => 0003928425
)
)
这是我想要从上一个数组构建的数组(将有很多索引)
verified[id]
verified[number]
到目前为止,我构建了这个脚本:
foreach($data as $key=>$value )
{
echo '<br>key '.$key;
foreach($value as $k=>$v)
{
$Verified[$key]['id'] = $v["id"];
$Verified[$key]['number'] = $v['document']['number'];
但只是得到未定义的索引错误消息。
我必须使用哪些索引来获取平展数组?
从我从你的问题中得出的结论来看,你可以做这样的事情来获得所需的输出,
$Verified = []; //use array() for versions below 5.5
foreach($data as $key=>$value )
{
echo '<br>key '.$key;
foreach($value as $k=>$v)
{
if(is_array($v)){
$Verified[$key]['number'] = $v['document']['number'];
}
$Verified[$key]['id'] = $v['id'];
请将数组传递给此函数
function arrayconvert($arr) {
if (is_array($arr)) {
foreach($arr as $k => $v) {
if (is_array($v)) {
arrayconvert($v);
} else {
$newarr[$k] = $v;
}
}
}
return $newarr;
}
不需要
第二个foreach,并且您正在获得未定义的索引,因为您在该行中使用$v['id']
而不是$val['id']
$Verified[$key]['id'] = $v["id"];
<?php
$data = array('Service' => array('id' => 6948229,'document' => array ('number' => '0003928425' )));
$verified = array();
foreach($data as $key => $val)
{
$verified[$key]['id'] = $val['id'];
$verified[$key]['number'] = $val['document']['number'];
}
echo "<pre>"; print_r($verified);
?>
输出
Array
(
[Service] => Array
(
[id] => 6948229
[number] => 0003928425
)
)