2011-03-21 2 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

答えて

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のドキュメントでそれが起こっているのを見ていないので、私はそれを残しました。

関連する問題