我有一个带键和值的常规数组。
是否有一种基于其值移除数组元素的简单方法,或者我必须对其进行foreach循环并检查每个值以将其删除?
答案 0 :(得分:28)
和array_diff:
$array = array('a','b','c');
$array_to_remove = array('a');
$final_array = array_diff($array,$array_to_remove);
// array('b','c');
编辑:了解更多信息:http://www.php.net/array_diff
答案 1 :(得分:11)
http://us3.php.net/array_filter
PHP 5.3从数组$ a中删除“foo”的示例:
<?php
$a = array("foo", "bar");
$a = array_filter($a, function($v) { return $v != "foo"; });
?>
第二个参数可以是任何类型的PHP回调(例如,函数名称作为字符串)。如果搜索值不是常数,您还可以使用函数生成函数。
答案 2 :(得分:3)
您应该可以使用array_search()
和array_splice()
的组合来实现这一目标。
未经测试,但应该适用于仅包含一次值的数组:
$array = array("Apples", "strawberries", "pears");
$searchpos = array_search("strawberries", $array);
if ($searchpos !== FALSE) {
array_splice($array, $searchpos, 1);
}
答案 3 :(得分:3)
简答$client = new Client();
// Hackery to allow HTTPS
$guzzleclient = new \GuzzleHttp\Client([
'timeout' => 60,
'verify' => false,
]);
// Hackery to allow HTTPS
$client->setClient($guzzleclient);
$crawler = $client->request('GET', 'url');
$elements = $crawler->filter('.ProfileNav-stat.ProfileNav-stat--link')->each(function($node){
$x = $node->filter('data-original-title');
dd($x);
});
<强>解释强>
unset($array[array_search('value', $array)]);
$key = array_search('value', $array);
答案 4 :(得分:0)
如果您的数组确实具有唯一值,则可以使用array_flip