2011-03-25 59 views
0

我有一个密钥列表 例如如何穿越php中的数组?

$key_list=array("list"=>array("task","duration")); 

function array_key_fun($key_list,$test_input){ 
    //(is_array($test_input)){ 
return array_map('myfunction',$test_input,$key_list); 
    //} 
} 


//$va=array_map("myfunction",$test_input); 
//print_r(array_key_fun($key_list,$test_input)); 

function myfunction($arr) 
{ 
    if(is_array($arr)) 
     { 

     $get_array= get_childs($arr); 
      return $get_array; 
     } 
} 
function get_childs($arr){ 

        $newarr=array(); 
        $newarr_en=''; 
            foreach($arr as $key=>$value)  
         {  

         if(is_array($value)){ 
           $newarr[$key]=get_childs($value); 

         }else{ 

          if (in_array($key,$key_list)) //here im facing the problem with key_list 
             { 
             .............. 
             } 
            else 
            { 
             ............... 
            } 

          } 

         } 
      return $newarr; 



    } 
+0

请加上:你的错误。你如何调用函数'abc()'。什么是'$ a'。 – Nanne 2011-03-25 10:33:24

+0

我越来越未定义变量$ key_list在乐趣..... – 0001 2011-03-25 10:38:48

+0

但我使用tat $ arr作为$ key => $ value .........在get_childs($ value,$ key_list)我声明。 ..给予...注意:未定义的变量:key_list在F:\ wamp \ www \ ext-3.3.0 \ myexamples \ encode examples \ saved_array_map_new.php on line 157.error – 0001 2011-03-25 11:03:13

回答

2

无论是传递函数或宣布为全球

function abc($a,$key_list){ 

OR

function abc($a){ 
    global $key_list; 
    //rest of code 

编辑:

当你传递该数组作为函数的参数,你必须p屁股呼叫价值以及

当你调用这个函数,这应该是

//array should be declared before calling function 
    $key_list=array("list"=>array("task","duration")); 
    abc($a,$key_list); //pass this array 
+0

但$ key_list超出了乐趣.. .....我需要检查钥匙是否存在于达阵,所以我可以做下一部分......... – 0001 2011-03-25 10:33:46

+0

我试过你的方式,传递乐趣但仍然变得不明确的变量错误 – 0001 2011-03-25 10:36:49

+0

@ 0001什么是确切的错误? – 2011-03-25 10:43:16

0

你必须使变量范围内你的代码是.........,如果你用global $key_list代替它,这将允许函数读/写这个堆栈。