2017-08-04 42 views
1

我在php中使用遞歸函數。該函數遍歷一個數組,並將數組的某些值輸入到一個新數組中。我正在使用array_push()在新陣列中輸入值,我也嘗試過不使用array_push。這是調用遞歸函數array_push()函數在遞歸函數中不起作用

if ($this->input->post('id') != '') { 
    $id = $this->input->post('id'); 

    global $array_ins; 
    $k=0; 
    $data['condition_array'] = $this->array_check($id, $menus['parents'], $k); 

    // trial 
    echo "<pre>"; 
    print_r($menus['parents']); 
    print_r($data['condition_array']);die; 
    // trial 
} 

功能的一部分,這這裏是

function array_check($val, $array_main, $k) { 
    // echo $val . "<br>"; 
    $array_ins[$k] = $val; 
    echo $k . "<br>"; 
    $k++; 
    // $array_ins = array_push($array_ins, $val); 
    echo "<pre>"; 
    print_r($array_ins); 
    if ($array_main[$val] != '') { 
     for ($i = 0; $i < sizeof($array_main[$val]); $i++) { 
      $this->array_check($array_main[$val][$i], $array_main, $k); 
     } 
     // $k++; 
    } 

我一直在試圖解決這一問題erorr相當長一段時間,沒有運氣的遞歸函數。我真的很感激任何可能的幫助。 在此先感謝

+0

請從$ array_ins – Sushil

回答

2

global $array_ins;語句移入該函數。

+0

tnaks張貼樣本值很多這工作。 –

0

全局關鍵字應在函數內部使用,以便變量將引用外部作用域中的值。

<?php 
$a = 1; 
$b = 2; 

function Sum() 
{ 
    global $a, $b; 

    $b = $a + $b; 
} 

Sum(); 
echo $b; // 3 
1

傳遞變量$array_ins作爲參數起作用

function array_check($val, $array_main, $k,$array_ins) { 


} 

並調用該函數

$this->array_check($id, $menus['parents'], $k,$array_ins); 

function array_check($val, $array_main, $k) { 

global $array_ins; 

} 

global使用是沒有t建議在PHP檢查它在這裏Are global variables in PHP considered bad practice? If so, why?

+0

'$ array_ins'應該通過引用傳遞,我想。 –