2017-02-04 97 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