删除数组的特定值

Sli*_*iQz 1 php arrays random

我有一个包含数字1到10的数组.当我选择一个随机数组键,我想删除这一个以下代码做类似的事情,但只是不够好.

$imgArray = range(1,9);
$rand_key = array_rand($imgArray);
$imgValue = $imgArray[$rand_key];
unset($imgArray[$imgValue]);
Run Code Online (Sandbox Code Playgroud)

代码从数组中删除一个值,但它删除了错误的值,回显数组会得到以下结果:

Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
    [4] => 5
    [5] => 6
    [6] => 7
    [7] => 8
    [8] => 9
)
Run Code Online (Sandbox Code Playgroud)

随机选择的项目将类似于数字4但是它会删除数组KEY 4,而不是数组值4 ..

有什么方法可以改变吗?除了改变变量(使用-1)?

Vin*_*982 7

因此,没有办法删除按功能取消设置的值,但是您为最简单的功能付出了诀窍?好吧,你找不到更简单的东西.

$array=array(312, 401, 1599, 3);
$toDelete=401;

$array=array_diff($array, array($toDelete));
Run Code Online (Sandbox Code Playgroud)

  • **+ 1**用于创造性. (3认同)

Jon*_*Jon 5

array_search 将返回您搜索的值的键,如果找到它:

$rand_key = array_rand($imgArray);
$imgKey   = array_search($imgArray[$rand_key]);

if ($imgKey !== false) {
    unset($imgArray[$imgKey]);
}
Run Code Online (Sandbox Code Playgroud)

当然你真的不需要这样做,因为$rand_key它已经是数组中的一个键(返回一个键!)所以代码简化为:array_rand

$rand_key = array_rand($imgArray);
// optional, if you need the value for something:
// $rand_val = $imgArray[$rand_key];
unset($imgArray[$rand_key]);
Run Code Online (Sandbox Code Playgroud)