【问题标题】:How to create and keep variables in a for-loop using arrays?如何使用数组在 for 循环中创建和保存变量?
【发布时间】:2017-06-21 18:52:32
【问题描述】:

我一直在尝试使用两个 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;

输出总是类型 8 - 未定义的变量。 我已经尝试了几个选项,这里也是建议的解决方案:PHP: Create Unique Variables In A For Loop,但没有一个积极的结果。

可能有人会说,我做的不是数组的意义。是的,你是对的。但想解决它。

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

【问题讨论】:

    标签: php arrays variables


    【解决方案1】:

    您正在函数内部创建变量,这就是函数外部无法访问的原因。您需要创建全局变量来访问它们。这是代码

    $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;
    

    【讨论】:

    • 就像 Clyff 的回答一样,效果很好。谢谢你,基图。 :-)
    【解决方案2】:

    您正在函数内部创建静态变量。函数完成后,变量就没用了。

    如果你想在你的函数之外使用它们,你应该创建全局变量或者让这个函数返回一个包含所有创建变量的输出(可能是一个数组?)。

    下面是函数内部全局变量的示例:

    <?php
        function printIt() {
            global $x;
            $x = array(1,2,3);
        }
    
        printIt();
        var_dump($x);
    

    您可以阅读更多关于它的信息here

    【讨论】:

    • 它有效,克利夫。非常感谢。正如它应该。我想赞成您的回答,但不幸的是我的帐户太年轻了。再次感谢。
    • 别担心,我很乐意为您提供帮助:)
    猜你喜欢
    • 1970-01-01
    • 2017-05-26
    • 1970-01-01
    • 2015-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多