我有一个包含数字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)?
因此,没有办法删除按功能取消设置的值,但是您为最简单的功能付出了诀窍?好吧,你找不到更简单的东西.
$array=array(312, 401, 1599, 3);
$toDelete=401;
$array=array_diff($array, array($toDelete));
Run Code Online (Sandbox Code Playgroud)
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)