如果存在,从PHP数组中删除值

时间:2011-09-19 04:48:58

标签: php arrays

我有以下PHP数组:

Array
(
    [0] => 750
    [1] => 563
    [2] => 605
    [3] => 598
    [4] => 593
)

我需要使用PHP对数组执行以下操作:

  1. 在数组中搜索一个值(该值将在a中 变量;我们称之为$number)。如果值 存在于数组中,将其删除。
  2. 如果有人可以告诉我如何做到这一点,我们将非常感激。

    注意:如果它更容易,我可以形成数组,使键与值相同。

3 个答案:

答案 0 :(得分:2)

$array = array_unique($array) // removes dupicate values


while(false !== ($num = array_search($num, $array))){
    unset($array[$num]);
}
$max = max($array);

将搜索值为$ num的所有键并将其取消设置

答案 1 :(得分:2)

说出你的$array

$array = array_unique($array) // removes dupicate values

$array = arsort($array) 

$variable = $array[0]  //  the maximum value in the array, and place it in a variable.  

$key = array_search($array, $number);

if($key){

    unset($array[$key])  // Search array for a value, value is present in array, remove it.

}

答案 2 :(得分:0)

array_search()unset()似乎是您问题中样本数据的好方法。为了比较,我将展示一种不同的方式(或者如果您的用例与您在此处发布的用例略有不同)。

方法:(Demo

$array=[750,563,605,598,593];

// if removing just one number apply the number as an array element
$number=605;
var_export(array_diff($array,[$number]));

// if you are performing this task with more than one $number, make $numbers=array() and do the same...
$numbers=[605,563];  // order doesn't matter
var_export(array_diff($array,$numbers));

// if you need to re-index the output array, use array_values()...
$numbers=[605,563];  // order doesn't matter
var_export(array_values(array_diff($array,$numbers)));

输出:

array (
  0 => 750,
  1 => 563,
  3 => 598,
  4 => 593,
)

array (
  0 => 750,
  3 => 598,
  4 => 593,
)

array (
  0 => 750,
  1 => 598,
  2 => 593,
)