Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP:转换多维数组_Php_Arrays_Multidimensional Array - Fatal编程技术网

PHP:转换多维数组

PHP:转换多维数组,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,给定以下数组: Array ( [entity] => Array ( [title] => Array ( [empty] => error message ) [link] => Array ( [empty] => error message ) [authors] => Array (

给定以下数组:

Array
(
  [entity] => Array
    (
      [title] => Array
        (
          [empty] => error message
        )
      [link] => Array
        (
          [empty] => error message
        )
      [authors] => Array
        (
          [0] => Array
            (
              [full_name] => Array
                (
                  [max_lengh] => another error message 2
                )
            )
        )
    )
)
如何将其转换为如下形式:

$array = [
'entity[title]' => 'error message',
'entity[link]' => 'error message',
'entity[authors][0][full_name]' => 'another error message 2',
];
我认为这是通过递归或使用引用实现的,但有两件事我不擅长)
提前谢谢你

关于数组语法,您完全搞混了。您没有理由想要这样的数组。唯一需要指出的是,[empty]变为[0],您可以尝试var_导出以更好地显示它

这是干什么用的

$array = [
'entity[title]' => 'error message',
'entity[link]' => 'error message',
'entity[authors][0][full_name]' => 'another error message 2',
];
到底是什么。。。?引号中有[]。我是说,你可以很容易做到

$array2['title'] = $array['title'][0];
等等

还有一件事要解决,你为什么一开始就这样

无论如何,它应该像这样工作

foreach ($array as $key => $value)
{
   if (isset($value[0]) && !is_array($value[0]))
   {
      $array[$key] = $value[0];
   }
}

可能没有正确地向任务解释。 谢谢大家

function format(array $array, $withLastKey = false) {
        $iterator = new RecursiveIteratorIterator(
            new RecursiveArrayIterator($array));
        $returnArray = [];
        foreach ($iterator as $key => $value) {
            $keys = [];
            for ($i = $iterator->getDepth(); $i >= 0; $i--) {
                $childKey = $iterator->getSubIterator($i)->key();
                // if first element then without bracket
                $keys[] = ($i == 0) ? $childKey : '[' . $childKey . ']';
            }
            $keys = array_reverse($keys);
            ($withLastKey) ?: array_pop($keys);
            $returnArray[implode('', $keys)] = $value;
        }
        return $returnArray;
    }

您可以使用
foreach()
尝试一些事情,您可能会感到惊讶,但如果遇到问题,您可以提出具体问题并分享您尝试过的代码,这更有可能得到答案。