【问题标题】:Concatenate recursive key of an array php连接数组php的递归键
【发布时间】:2018-07-02 11:28:51
【问题描述】:

我有一个这样的数组:

array(2) {

  ["xxx"]=>
    array(2) {
      ["yyy"]=>
        array(1) {
          ["text"]=> string(13) "test offline2"
        }
      ["yyy2"]=>
        array(1) {
          ["text"]=> string(12) "test offline"
        }
    }
    ["usual_name"]=> string(12) "test offline"

}

我想要一个这样的新数组:

array(3) {
  ["xxx.yyy"]=> string(12) "test offline"
  ["xxx.yyy2"]=> string(12) "test offline"
  ["usual_name"]=> string(12) "test offline"
}

如果有人可以帮助我,请!

【问题讨论】:

标签: php arrays recursion key concatenation


【解决方案1】:

试试这个:

$arr1 = array("xxx"=>array(
                        "yyy" => array("text" => "test offline2"),
                        "yyy2" => array("text"=> "test offline")
                    ),
              "usual_name" => "test offline"
        );

$arr2 = array();
foreach ($arr1 as $key1 => $value1) {
    if(is_array($value1)) {
        foreach ($value1 as $key2 => $value2) {
            if(is_array($value2))
            {
                foreach ($value2 as $key3 => $value3) {
                    $arr2[$key1.'.'.$key2]= $value3;
                }
            }
        }
    }
    else {
        $arr2[$key1]= $value1;
    }
}

【讨论】:

  • 是的!它有效,谢谢!但是你知道如何递归地做吗? (如果有超过 2/3 的数组)
  • ` $arr1 = array("xxx"=>array("yyy" => array("text" => "test offline2"), "yyy2" => array("text"= >“离线测试”)),“常用名称”=>“离线测试”); $concatArray = keyConcatinate($arr1); function keyConcatinate($arr1, $arr2 = array(), $key2 = '') { foreach ($arr1 as $key => $value) { if (is_array($value)) { $arr2 = array_merge($arr2, keyConcatinate($value, $arr2, $key2 . $key . '.')); } 其他 { $arr2[$key2 . $key] = $价值; } } 返回 $arr2; }`
  • @Florian 试试上面的代码,它们执行相同的任务但使用递归。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-19
  • 2013-08-28
  • 1970-01-01
  • 2019-05-08
相关资源
最近更新 更多