2011-03-21 65 views
0

如何在類中模擬PHP4中的以下行爲。array_walk_recursive PHP4

$sample = array('dog' => 'woof', 'cat' => array('angry' => 'hiss', 'happy' => 'purr'), 'aardvark' => 'kssksskss'); 
$output = array(); 

// Push all $val onto $output. 
array_walk_recursive($sample, create_function('$val, $key, $obj', 'array_push($obj, $val);'), &output); 

print_r($output); 

/* 
* Array 
* (
* [0] => woof 
* [1] => hiss 
* [2] => purr 
* [3] => kssksskss 
*) 

*/

+7

沒有理由再使用PHP4了。 – ThiefMaster 2011-03-21 16:02:54

回答

0

這裏是一個簡單的實現:

function array_walk_recursive(&$input, $callback, $userdata = null) { 
    foreach($input as $key => &$value) { 
     if (is_array($value)) { 
      if(!array_walk_recursive($value, $callback, $userdata)) { 
       return false; 
      } 
     } 
     else { 
      call_user_func($callback, $value, $key, $userdata); 
     } 
    } 

    return true; 
} 

的一兩件事,這將不會做的是返回false。我沒有在array_walk的文檔中看到可能發生的情況,所以我將它排除在外。