从数组中删除元素的值?

时间:2010-01-30 22:17:36

标签: php

我有一个带键和值的常规数组。

是否有一种基于其值移除数组元素的简单方法,或者我必须对其进行foreach循环并检查每个值以将其删除?

5 个答案:

答案 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); });

<强>解释

  1. 按值显示关键字:unset($array[array_search('value', $array)]);
  2. 按键删除数组元素:$key = array_search('value', $array);

答案 4 :(得分:0)

如果您的数组确实具有唯一值,则可以使用array_flip

翻转它们