2015-07-03 16 views
0

這裏是更長的示例https://eval.in/392036Php數組。循環。如果條件爲真,則設置變量。再循環。需要重複。但不重複相同的代碼

循環數組。

如果數組值==爲某個(第一個)變量[0],則設置下一個變量[1]。

再次循環通過相同的數組(循環內部循環)。

並再次檢查數組值== ==下一個變量[1] ....並再次執行相同操作。

因此,手動複製/粘貼相同的代碼,只需更改變量[x]。

有這樣的陣列

(
[0] => Array 
    (
     [Id] => 17 
     [Value] => ProductsParentId_0_CurrentId_17 
     [ParentId] => 0 
    ) 

[1] => Array 
    (
     [Id] => 1 
     [Value] => HomeParentId_0_CurrentId_1 
     [ParentId] => 0 
    ) 

[2] => Array 
    (
     [Id] => 18 
     [Value] => ComputersParentId_17_CurrentId_18 
     [ParentId] => 17 
    ) 

..... 

) 

並遍歷

foreach ($arr as $k_arr => $v_arr){ 

if($v_arr['ParentId'] == 0){ 
echo $v_arr['Value']. "\n"; 
$parent_id_for_current[1] = $v_arr['Id']; 

    foreach ($arr as $k_arr => $v_arr){ 
    if($v_arr['ParentId'] == $parent_id_for_current[1]){ 
    echo $v_arr['Value']. "\n"; 
    $parent_id_for_current[2] = $v_arr['Id']; 

     foreach ($arr as $k_arr => $v_arr){ 
     if($v_arr['ParentId'] == $parent_id_for_current[2]){ 
     echo $v_arr['Value']. "\n"; 
     $parent_id_for_current[3] = $v_arr['Id']; 

      ..... 

     }//if($v_arr['ParentId'] == $parent_id_for_current[2]) 
     }//foreach 

    }//if($v_arr['ParentId'] == $parent_id_for_current[1]) 
    }//foreach 

}//if($v_arr['ParentId'] == $parent_id_for_current[0]) 


}//foreach ($arr as $k_arr => $v_arr) 

是否有可能得到相同的結果,而不是重複(複製/粘貼)foreach, if

預期的結果是:

1)show ['Value'] where [ParentId] => 0

1.1)再次定義變量具有值[Id] => 17

2)循環,查找並顯示['Value']其中在1.1中定義[ParentId] ==變量)。 並重復所有。再次定義另一個變量,然後再次循環,檢查是否存在[ParentId]等於定義的變量...像鏈接問題的頂部

+0

'$ parent_id_for_current [$ i]',基本上... –

+0

預期的結果是什麼? –

+0

在第一個循環結束之前嘗試了例如'while($ x <= 3)'之前的所有循環和'x ++',但無法獲得預期的結果 – user2118559

回答

1

它看起來像你有一個遞歸模式:

function loopMyArray(&$array, &$parent, $i) 
{ 
    // That's your stop condition of the recursive pattern 
    // I think it's what you want. 
    if (count($array) == $i) 
    { 
     return; 
    } 
    // The foreach loop call the "loopMyArray" at each iteration 
    foreach ($array as $k_arr => $v_arr) 
    { 
     if($v_arr['ParentId'] == $parent[$i]) 
     { 
      echo $v_arr['Value']. "\n"; 
      $parent[$i+1] = $v_arr['Id']; 
      loopMyArray($array, $parent, $i+1); 
     } 
    } 
} 

$array = [...] 
$parent = [0] 
loopMyArray($array, $parent, 0); 
+0

試圖測試https://eval.in/392044東西不起作用 – user2118559

+0

我更正了未定義的變量$ ARR爲$ array – Mat

+0

這裏另一個https://eval.in/392045。一些工作,但太多的價值......並且''6'=>數組缺失 – user2118559