【问题标题】:PHP Strip count value from ArrayPHP 从数组中去除计数值
【发布时间】:2011-05-13 21:12:39
【问题描述】:

我有一个返回数组的 ldap 请求,但是返回的数组充满了“计数”和奇数指针,因为这个应用程序是一个设计用于在移动设备上与 Javascript 一起使用的 API,文本越少越好.

去除所有没有键计数的值的最有效方法是什么?以及那些似乎只是在说键是什么的(例如 [0] => cn)?

Array
(
    [status] => OK
    [count] => 4
    [results] => Array
        (
            [count] => 3
            [0] => Array
                (
                    [cn] => Array
                        (
                            [count] => 1
                            [0] => James Bee
                        )

                    [0] => cn
                    [umanprimaryou] => Array
                        (
                            [count] => 1
                            [0] => Awesome School
                        )

                    [1] => umanprimaryou
                    [ou] => Array
                        (
                            [count] => 2
                            [0] => School of Awesome
                            [1] => Faculty of Engineering
                        )
etc...

目标

Array
(
    [status] => OK
    [results] => Array
        (
            [0] => Array
                (
                    [cn] => Array
                        (
                            [0] => James Bee
                        )
                    [umanprimaryou] => Array
                        (
                            [0] => Awesome School
                        )
                    [ou] => Array
                        (
                            [0] => School of Awesome
                            [1] => Faculty of Engineering
                        )
etc...

为了进一步解释,我想取消设置所有 [count] => 值对,如果可能的话,取消设置结果数组中的 [0] => cn 等值。

【问题讨论】:

  • 你能展示一个你想要的数组输出的例子吗?
  • 似乎你过早地优化了一些可能不是真正问题的东西。您知道这些额外的字段会严重影响您的应用吗?
  • @OriginalSyn 不一定是降级,但是由于连接到api的设备会是移动的,所以我可以让数据越小越好,并且count字段根本不用相关应用。 @SteveComie,见帖子
  • 我也不明白你想要做什么...你想删除所有 'count' => 值元素吗?

标签: php arrays multidimensional-array


【解决方案1】:

未经测试的代码:

function strip_count(array $arr) {
    foreach ($arr as $key => $value) {
        if (is_array($arr[$key])) {
            strip_count($arr[$key]);
        } else {
            if ($key == 'count') {
                unset($arr[$key]);
            }
        }
    }
}

编辑:我在你编辑你的问题之前写了这个,但是修改这个递归函数来去掉你想要删除的其他东西应该不会太难。

【讨论】:

  • 这不需要作为参考传递吗?还是 unset 在给定的数组上工作?另外我怎么能添加[0] => cn的剥离?
  • "从 PHP 5 开始,可以通过引用传递它们来直接更改数组的值" - php.net/manual/en/language.types.array.php
【解决方案2】:

可能想研究使用array_walk_recursive 并检查$key == 'count' 是否在您的用户定义函数中。

【讨论】:

    猜你喜欢
    • 2012-02-25
    • 1970-01-01
    • 2011-06-07
    • 1970-01-01
    • 2016-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-24
    相关资源
    最近更新 更多