如何在PHP中从数组中创建嵌套数组
比如说,我们有一个数组:如何在PHP中从数组中创建嵌套数组,php,arrays,nested,iteration,Php,Arrays,Nested,Iteration,比如说,我们有一个数组:array(1,2,3,4,…) 我想把它转换成: array( 1=>array( 2=>array( 3=>array( 4=>array() ) ) ) ) 有人能帮忙吗? 谢谢 编辑有迭代的解决方案会很好。好吧,试试这样的方法: $in = array(1,2,3,4); // Array with incom
array(1,2,3,4,…)
我想把它转换成:
array(
1=>array(
2=>array(
3=>array(
4=>array()
)
)
)
)
有人能帮忙吗?谢谢
编辑有迭代的解决方案会很好。好吧,试试这样的方法:
$in = array(1,2,3,4); // Array with incoming params
$res = array(); // Array where we will write result
$t = &$res; // Link to first level
foreach ($in as $k) { // Walk through source array
if (empty($t[$k])) { // Check if current level has required key
$t[$k] = array(); // If does not, create empty array there
$t = &$t[$k]; // And link to it now. So each time it is link to deepest level.
}
}
unset($t); // Drop link to last (most deep) level
var_dump($res);
die();
输出:
array(1) {
[1]=> array(1) {
[2]=> array(1) {
[3]=> array(1) {
[4]=> array(0) {
}
}
}
}
}
我认为要创建的多维数组的语法如下所示
$array = array(
'array1' => array('value' => 'another_value'),
'array2' => array('something', 'something else'),
'array3' => array('value', 'value')
);
这就是您想要的吗?您只需创建一个递归函数:
您也可以在一行中使用此命令:
$array=Arr::setNestedElement([],'1.2.3.4','value');
听起来有点不合逻辑。你需要它做什么?Q.如何从数组中制作一些东西?使用循环。是否愿意与我们分享您为什么要这样做?很难想象你会需要它。我正在学习php,想练习数组。@你的常识,有时甚至更好,一个递归函数。我认为这是最清晰的解决方案,只要看一眼就可以知道它的功能。在基本情况下,您可能应该返回一个空数组。是的,这可能是一个优雅的解决方案,但我需要一个迭代的解决方案。谢谢你的帮助:)。完成同一项任务有这么多方法。我不明白为什么会有人对此投反对票@那么你的问题应该提到这一点@MrFix:可以用来构造数组的思维过程显然是递归的(通常是嵌套任务),这种解决方案的优点是清晰简洁。如果你的目标是练习,你最好现在就养成好习惯:-)。@Blackhole,我正在一步一步地学习,我认为学习其他可能的解决方案对我也有好处。感谢您的建议:)…显然这不是示例输入(不是说很难转换为OP的数据类型)为什么这个答案会被投票否决?!?它根本不提供任何转换代码。
$x = count($array) - 1;
$temp = array();
for($i = $x; $i >= 0; $i--)
{
$temp = array($array[$i] => $temp);
}