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()
尝试一些事情,您可能会感到惊讶,但如果遇到问题,您可以提出具体问题并分享您尝试过的代码,这更有可能得到答案。