【问题标题】:PHP filter 2 dimensional array by specific keyPHP按特定键过滤二维数组
【发布时间】:2011-11-12 13:14:36
【问题描述】:

我有这个数组:

Array
(
    [702a4584] => Array
        (
            [type] => folder
            [id] => 702a4584
        )

    [b547b3a9] => Array
        (
            [type] => folder
            [id] => b547b3a9

        )

    [fcb0d055] => Array
        (
            [type] => page
            [id] => fcb0d055
        )
)

我想过滤数组,只保留“文件夹”类型:

Array
(
    [702a4584] => Array
        (
            [type] => folder
            [id] => 702a4584
        )

    [b547b3a9] => Array
        (
            [type] => folder
            [id] => b547b3a9

        )

)

我可以这样做,但我需要一个通用函数:

$temp = array();
foreach($array as $key => $value)
{
    if($value['type'] =="folder")
    {
        $temp[$key] = $value; 
    }
}

【问题讨论】:

  • “泛型函数”是什么意思?

标签: php multidimensional-array filtering


【解决方案1】:

你可以使用array_filter:

$filtered = array_filter($array, function($v) { return $v['type'] == 'folder'; });

【讨论】:

  • 应该是return $v['type'] == 'folder';
  • @fireeyedboy: 哎呀,很好的捕获,已修复。我在想出于某种原因他只想要页面:)
  • 如何统计上述关联数组中不同类型的个数?
【解决方案2】:
$input = Array(1,2,3,1,2,3,4,5,6);
$input = array_map("unserialize", array_unique(array_map("serialize", $input)));

【讨论】:

  • 问题是如何通过特定键值过滤二维数组,但您的答案是如何删除简单数组中重复元素的解决方案。
猜你喜欢
  • 2010-12-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-11
  • 2013-06-23
  • 1970-01-01
相关资源
最近更新 更多