假设您有一个填充了名字/姓氏的字典/关联数组的php数组,如下所示:
$userList = array(array('first'=>'Jim', 'last'=>'Kirk'), array('first'=>'George', 'last'=>'Bush'));
/*
$userList now looks like
{
{
first => Jim,
last => Kirk
},
{
first => George,
last => Bush
}
}
*/
如何告诉php "Remove elements from $userList as $users where $user['first'] === 'George'"
?
答案 0 :(得分:1)
foreach
并使用引用&
来修改/取消设置该数组元素:
foreach($userList as &$user) {
if($user['first'] == 'George') {
unset($user);
}
}
答案 1 :(得分:1)
将array_filter
与您想要的条件的回调一起使用
答案 2 :(得分:0)
我是这样做的(基于“查尔斯”来自This Question的答案)...
首先,我创建了一个函数工厂:
function createNotNamedFunction($first)
{
return function($user) use($first) {
return $user['first'] !== $first;
};
}
然后,当我需要过滤数组时,我会调用它:
$first = 'George';
$notNamed = self::createNotNamedFunction($first);
$filteredUsers = array_filter($userList, $notNamed);
简短,易于理解,可扩展(测试可以任意复杂,因为它是一流的功能),并且不涉及循环。
此技术使用闭包,array_filter
,仅适用于PHP 5.3
或更高版本,但这是我认为的规范答案。事实证明array_filter
“从数组中移除”,当您为其提供任意测试时。
感谢所有提供替代模式的世界级php向导!