基于级别创建动态数组索引

时间:2019-01-10 10:25:43

标签: php

我需要帮助。

我需要创建一个级别的动态数组索引。

我有一个级别的动态值,它可以是2,3,4 ....

如果$ levels = 5;

我需要使用for循环创建以下数组。

$arr['level1']['level2']['level3']['level4']['level5']

下面的代码场景可能有助于理解要求。

foreach ($results as $row) { 
   $level = 5; 
   for ($x = 1; $x <= $level; $x++) { 
   /* i need to crete the below format array*/ 
       $arr['level1']['level2']['level3']['level4']['level5']
    } 
    $arr['level1']['level2']['level3']['level4']['level5'] = $row;
}

2 个答案:

答案 0 :(得分:0)

您正在寻找一个递归函数,大致如下:当您的级别不正确时,重复该函数并添加另一个级别。从所需的巢穴和反向巢穴走回去可能是最简单的:

function CreateRowAtDepth($depth = 1, $row='', $outputArr=array()) {
    $outputArr['level'+$depth] = $row;
    $depth--;
    while($depth > 0) {
        $outputArr = nestArray($depth, $outPutArr);
        $depth--;
    }
    return outputArr
}

function nestArray($depth, $outPutArr) {
    return array('level'+$depth => $outPutArr) ;
}

并使用所需的depth参数调用一次函数:

CreateRowAtDepth(5, $row)

答案 1 :(得分:0)

您可以使用foreach循环,它将为您的结果建立索引。例子...

$arr = ['a', 'b', 'c', 'd', 'e'];

foreach($arr as $key=>$value) {
    echo "<p>This is the key: {$key}</p>"; 
    echo "<p>This is the value: {$value}</p>"; 
}

结果将是

这是关键:0

这是值:a

这是关键:1

这是值:b

这是关键:2

这是值:c

这是关键:3

这是值:d

这是关键:4

这是值:e

如果您希望索引从1开始。...

$arr2 = ['a', 'b', 'c', 'd', 'e'];
$key = 1;
foreach($arr2 as $answer) {

    echo "<p>Index: {$key} Value: {$answer}</p>"; 
    $key ++;  

}

最后,由于我不确定您是否试图将一个数组中有多少结果,因此这是另一种方法。

$arr2 = ['a', 'b', 'c', 'd', 'e'];
$key2 = 1;
$newArray = [];
foreach($arr2 as $answer) {
    array_push($newArray, $key2);
    $key2 ++;
}
foreach($newArray as $answer) {
    echo $answer;
}