是否有某种类型的选择函数来创建一个新数组,仅选择某些元素,子元素与大小写匹配?例如,我只想有一个包含 [type] 是"A"的数组,所以有一个只包含 [1] 和 [2] 的最终数组。
[1]
[type] => A
[month] => January
[2]
[type] => A
[month] => February
[3]
[type] => B
[month] => March
谢谢!
function is_type_a($element) { return $element['type'] === 'A'; }
$fiteredArray = array_filter($inputArray, 'is_type_a');
如果你有 PHP 5.4,你可以用匿名函数更简洁地做到这一点。
您可以将该数组减少到所需的条目。请记住,这将保留原始键,因此,如果在此过程中未设置 2,则最终可能会得到一个将 0、1 和 3 作为键的数组。
foreach( $array as $key => &$value ){
if ( $value['type'] != 'A' )
unset( $array[ $key ] );
}
演示:http://codepad.org/OG5rguJ8
另一种方法是使用 array_filter
迭代地减少数组,一次减少一个条目:
function callbackFunc( $val ) {
return $val['type'] == 'A';
}
$result = array_filter( $array, callbackFunc );
我们调用传入要过滤的数组的 array_filter
方法,以及我们创建的过滤函数。我们的函数将针对数组中的每个元素运行,将当前元素视为$val
变量。
如果该变量的类型键映射到==
到"A"的值,则返回TRUE
。否则,将返回FALSE
。当函数返回TRUE
时,计算值被发送到$result
数组。如果返回了FALSE
,则不会将该值推送到$result
数组上。
与上一个选项一样,此方法也将保留键值。
演示:http://codepad.org/todHBZo7
function select_custom($array,$param)
{
foreach($array as $k=>$v)
{
if($v['type']==$param)
{
$returnArray[] = $v;
}
}
return $returnArray;
}
如果你知道要选取的元素的索引,你可以使用 array_splice((,如果不是像前面的答案所建议的那样,你必须循环