如何使用数组在for循环中创建和保留变量?

时间:2017-02-04 12:46:28

标签: php arrays variables

我一直在尝试使用两个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,但没有得到肯定的结果。

可能有些人会说我做的不是阵列感。是的,你是对的。但是想解决它。

也许有人知道如何完成它。提前谢谢。

2 个答案:

答案 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;