好的,所以我有:一个数组(a)的数组(b)的阵列(c)。
我正在尝试迭代该数组和取消设置(或者准确地说,删除)级别为'c'的所有数组,其中项目少于3个。
你会怎么做?
我已经尝试了unset
的各种可能的用法,但我仍然不能得到我需要的结果。
foreach ($data as $a=>&$data_section)
{
foreach ((array)$data_section as $b=>$pattern)
{
if (count((array)$pattern)<3) { unset($data_section[$b]); }
}
}
这个给出了一个错误:
致命错误:无法取消设置字符串偏移
为什么不直接使用array_filter呢。
php 5.3+语法
$data = array_filter($data, function($a){ return count($a) >2; });
php 5.3之前的
function countGreaterThanTwo($a){ return count($a) >2; };
$data = array_filter($data, "countGreaterThanTwo");
所以在你上面的例子中,你会做
foreach ($data as $a=>&$data_section)
{
foreach ($data_section as $b=>&$pattern)
{
$pattern = array_filter($pattern, function($a){ return count($a) >2; });
}
}