2017-02-04 96 views
1

我一直想有两个工作for循环通过多维数组迭代和值分配给单个变量。但是,它不起作用,因为我似乎无法获得分配给数据的变量。如何在使用数组的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,但没有一个积极的结果。

也许有些人会说,我做的是不是数组的感觉。是的,你是对的。但是想解决它。

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

回答

0

你正在创建静态变量里面你工作。当函数完成时,变量将是无用的。

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

这里是一个函数中的全局变量的一个例子:

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

    printIt(); 
    var_dump($x); 

你可以阅读更多关于它here

+0

它的工作,克莱夫。非常感谢你。正如它应该。我想提高您的答案,但不幸的是,我的帐户太年轻。再次感谢。 – nucky

+0

不用担心,我很乐意帮助:) – Clyff

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; 
+0

像克莱夫的答案一样,效果很好。谢谢你,Kittu。 :-) – nucky