2011-03-25 35 views
0

我有一個陣列,例如如何動態獲取數組鍵在php中檢查條件?


$test_input= array(
    0=> array(
    "task" => 'ColumnTree Example', 
    "duration" => '3 hours', 
    "user"=> '', 
    "uiProvider" => 'col', 
    "cls" => 'master-task', 
    "iconCls" => 'task-folder', 
    'children'=> array(
     0 => array(
     "task" => 'Abstract rendering in TreeNodeUI', 
     "duration" => '15 min', 
     "user" => 'Jack Slocum', 
     "uiProvider" => 'col', 
     "leaf" => true, 
     "iconCls" => 'task' 
    ), 
     array(
     "task" => 'Test and make sure it works', 
     "duration" => '1 hour', 
     "user" => 'Jack Slocum', 
     "uiProvider" => 'col', 
     "leaf" =>true, 
     "iconCls" =>'task' 
    ) 
    ) 
), 
    array(
    "task" => 'Custom Field Example', 
    "duration" => '2 1/2 hours', 
    "user" => '', 
    "uiProvider" => 'col', 
    "cls" => 'master-task', 
    "iconCls" => 'task-folder', 
    'children'=>array(
     0 => array(
     "task" =>'Implement "Live Search" on extjs.com from Alex', 
     "duration" =>'1 hour', 
     "user" =>'Jack Slocum', 
     "uiProvider" =>'col', 
     "leaf" =>true, 
     "iconCls"=> 'task' 
    ), 
     array(
     "task"=>'Extend TwinTrigger', 
     "duration"=>'30 min', 
     "user"=>'Jack Slocum', 
     "uiProvider"=>'col', 
     "leaf"=>true, 
     "iconCls"=>'task' 
    ) 
    ) 
), 
    array(
    "task"=>'Foo Bar Item', 
    "duration"=>'3 hours', 
    "user"=>'', 
    "uiProvider"=>'col', 
    "cls"=>'master-task', 
    "iconCls"=>'task-folder', 
    'children'=>array(
     0 => array(
     "task"=>'Abstract rendering in TreeNodeUI', 
     "duration"=>'15 min', 
     "user"=>'Jack Slocum', 
     "uiProvider"=>'col', 
     "leaf"=>true, 
     "iconCls"=>'task' 
    ), 
     array( 
     "task"=>'Create TreeNodeUI with column knowledge', 
     "duration"=>'45 min', 
     "user"=>'Jack Slocum', 
     "uiProvider"=>'col', 
     "leaf"=>true, 
     "iconCls"=>'task' 
    ) 
    ) 
) 
); 

我想要做一些東西。通過檢查條件

if($key=="task") 
{ 
    something/......... 
} 

所以在這裏,而不是靜態地給予鍵值爲「任務」。我需要這應該動態。 我正在使用array_map來映射我的函數和我的數組。請給我一些關於如何做到這一點的例子。

+0

可能是這樣的重複:http://stackoverflow.com/questions/5152694/php-referencing-a-dynamic-associative-array-position/5152747#5152747 – DhruvPathak 2011-03-25 07:37:27

+1

請給我們一個如何使用它的例子。 – 2011-03-25 07:47:02

+0

你使用哪個PHP版本?使用'foreach'可能更容易。 – 2011-03-25 07:47:55

回答

0

您可以使用foreach進行此操作。無論您是使用foreach執行此任務,但您必須按照您的要求進行檢查。

因爲通過使用foreach,你可以得到關鍵和值對,但檢查你必須把條件。

0

從你的數據結構看,你需要做recursion。試試這個代碼:

function walk_array($array, &$returnData, $depth = 0) 
{ 
    $depth++; 
    foreach($array as $key=>$value) 
    { 
     $returnData[] = $value['task']; 

     if(isset($value['children']) && is_array($value['children'])) 
     { 
      walk_array($value['children'], &$returnData, $depth); 
     } 
    } 
} 

測試這樣的:

$returnData = array(); 
walk_array($test_input, &$returnData); 
echo implode("<br />", $returnData); 

有一點需要注意有關遞歸 是,設計 代碼時要小心。一個微小的錯誤可能會最終無限循環。