【问题标题】:PHP: Shortcut for making multidimensional arrayPHP:制作多维数组的快捷方式
【发布时间】:2011-11-03 23:03:55
【问题描述】:

我需要这样做:

$array['level1']['level2']['level3'] = 'someval';

但是,我不知道会有多少关卡。我希望能够自动创建具有任意数量级别的这些数组。我正在尝试调整以下内容,使其形成一个实际的 PHP 数组:

for($i=1;$i<=3;$i++){
  $string .= '_level'.$i;
};
${'array'.$string} = 'someval';

var_dump($array_level1_level2_level3); //Outputs: string(7) "someval"

显然这不能替代数组。我只是在寻找可以应用于多维数组的并行。我怀疑答案在于某种递归函数,但我不太确定是什么。

更新

这是我真正想做的事情。我无法充分解释我的问题,因此问题已关闭。所以,我试着把它拆成碎片。

https://stackoverflow.com/questions/8002490/creating-multidimensional-arrays-in-php

【问题讨论】:

  • 您是否需要这样做?
  • 所以不是输入 49 个字符,而是输入 85 个字符?如果是这样的话,我可以让你对月球上一些非常漂亮的房地产感兴趣吗?不过说真的,除了让你的代码在你完成后让任何需要支持它的人感到困惑之外,我看不出你想要做什么。
  • 您确定您正在解决正确的问题吗?也许数组是您尝试使用的数据的错误媒介......
  • 您需要考虑的另一件事是取消设置数组中的元素。您目前可能不需要这样做,但请考虑unset($array['level1']['level2']);。使用数组,这很容易。使用您的系统,您将需要检查所有变量以在正确的位置查找 level2 并取消设置该变量。代码复杂、混乱、速度慢。
  • @DaveWilsonLAMP 让我澄清一下:我不想使用我提供的示例代码。我正在演示我希望在创建多维数组时实现的自动化类型。数组确实很容易。这就是为什么我正在寻求帮助来创建它们。

标签: php arrays


【解决方案1】:

您可以尝试以下方法:

function makeArray($array, $lowElement, $highElement, $value) {
    if($highElement == $lowElement) {
        $array['level' . $highElement] = $value;
    }
    else {
        $array['level' . $lowElement] = makeArray($array, $lowElement+1, $highElement, $value);
    }

    return $array;
}

$array = array();
$array = makeArray($array, 1, 5, 'someval');
print_r($array);   // Output: Array ( [level1] => Array ( [level2] => Array ( [level3] => Array ( [level4] => Array ( [level5] => someval ) ) ) ) )

输出表明现在您有以下内容:

$array['level1']['level2']['level3']['level4']['level5'] = 'someval';

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-20
    • 1970-01-01
    • 1970-01-01
    • 2020-11-30
    • 2019-10-02
    • 2012-07-20
    相关资源
    最近更新 更多