array_walk_recursive PHP4

发布于 2024-10-24 18:01:01 字数 474 浏览 1 评论 0原文

我怎样才能在类中模拟 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
* )

*/

How can I emulate the following behavior in PHP4 within a Class.

$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
* )

*/

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

剧终人散尽 2024-10-31 18:01:01

这是一个简单的实现:

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 的文档中没有看到这种情况何时可能发生,所以我将其省略了。

Here's a straightforward implementation:

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;
}

The one thing this will not do is return false. I didn't see in the docs for array_walk when that might happen, so I left it out.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文