我一直在尝试使用两个for循环来迭代多维数组并将值分配给各个变量。但是,它不起作用,因为我似乎无法获得分配给数据的变量。
$onepage = array
(
array("navbar",22,28,23,25),
array("presentation",15,13,23,23),
array("content",5,2,13,10),
array("footer",17,15,23,26)
);
function presetter($selection) { //selection = onepage
for($n=0;$n<=3;$n++){
for($i=1;$i<=4;$i++){
$rwcl = $selection[$n][0];
$numb = $i -1;
${$rwcl . $numb} = $selection[$n][$i]; //outputs navbar1
$l = $rwcl . $numb;
$$l = $selection[$n][$i];
echo ${$rwcl . $numb}; //outputs variable navbarx
echo $rwcl;//output column name
echo $selection[$n][$i];
echo "<br>";
}
}
} //<-- works!
presetter($onepage);
echo $navbar1;
输出始终为Type 8 - 未定义变量。 我已经尝试了几个选项,也就是这里提出的解决方案:PHP: Create Unique Variables In A For Loop,但没有得到肯定的结果。
可能有些人会说我做的不是阵列感。是的,你是对的。但是想解决它。
也许有人知道如何完成它。提前谢谢。
答案 0 :(得分:0)
您正在创建静态变量。功能完成后,变量将无用。
如果你想在你的函数之外使用它们,你应该创建全局变量或使这个函数返回一个输出,其中创建了所有变量(可能是一个数组?)。
以下是函数内部全局变量的示例:
<?php
function printIt() {
global $x;
$x = array(1,2,3);
}
printIt();
var_dump($x);
您可以阅读更多相关信息here
答案 1 :(得分:0)
您正在函数内创建变量,这就是函数外部无法访问的原因。您需要创建全局变量来访问它们。这是代码
$onepage = array
(
array("navbar", 22, 28, 23, 25),
array("presentation", 15, 13, 23, 23),
array("content", 5, 2, 13, 10),
array("footer", 17, 15, 23, 26));
function presetter($selection) { //selection = onepage
for ($n = 0; $n <= 3; $n++) {
for ($i = 1; $i <= 4; $i++) {
$rwcl = $selection[$n][0];
$numb = $i - 1;
$var = $rwcl . $numb;
global $$var;
$$var = $selection[$n][$i]; //outputs navbar1
}
}}
presetter($onepage);echo $navbar1;