PHP 将数组格式化为平面数组


PHP format an array of arrays into a flat array

>我有一个生成的数组采用这种格式,并希望生成第二个数组以适应需要特定格式的文件

这是我拥有的数组:

(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
        )
)