我需要帮助。
我需要创建一个级别的动态数组索引。
我有一个级别的动态值,它可以是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;
}
答案 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;
}