【问题标题】:PHP - How can I apply an arbitrary filter to leaf nodes of hierarchical array?PHP - 如何将任意过滤器应用于分层数组的叶节点?
【发布时间】:2012-10-11 05:46:50
【问题描述】:

我希望能够过滤数组的叶节点,以确保数据按任意规范正确格式化。有没有一种简单的方法可以在 PHP 中对多维数组的叶节点应用过滤函数?

【问题讨论】:

  • 是叶子节点还是前导节点?
  • 对不起,我的意思是叶节点。我纠正了错字。
  • 你是指随机过滤器还是任意过滤器?
  • 任意。更新了标题以反映这一点。

标签: php arrays filter


【解决方案1】:
function filter_leaf_nodes($tree, $filter) {
    $ret = array();
    foreach ($tree as $subtree) {
        if (is_array($subtree)) {
            $ret[] = filter_leaf_nodes($subtree, $filter);
        } else if ($filter($subtree)) {
            $ret[] = $subtree;
        }
    }
    return $ret;
}

$tree = array(
    array(
        array(
            -1,
            5
        ),
        -3,
        2,
    ),
    array(
        3,
        9
    ),
    -9
);

$filter = function($node) {
    return $node >= 0;
};

var_dump(filter_leaf_nodes($tree, $filter));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-29
    • 1970-01-01
    • 2019-01-31
    • 1970-01-01
    • 2020-05-20
    相关资源
    最近更新 更多