php代码上的in_array()问题。我有以下数组:
Array (
[0] => 11
[1] => 13
[2] => 14
[3] => 15
[4] => 16
[5] => 17
[6] => 18
[7] => 19
[8] => 20
[9] => 21
[10] => 22
[11] => 23
[12] => 24
[13] => 25
[14] => 26
[15] => 27
[16] => 28
[17] => 29
)
以下函数从数组中删除一个元素(因为unset不保留索引):
function removeFromArray($value, $array) {
// If value is in the array
if (in_array($value, $array)) {
// Get the key of the value
$key = array_search($value, $array);
// Remove the element
unset($array[$key]);
// Fix the key indexes
$array = array_values($array);
return $array;
}
return false;
}
不幸的是我收到错误:“in_array()期望参数2是数组,布尔值给定”当我执行in_array($ value,$ array)时,如果条件。对于数组的任何元素都会发生这种情况。
我在$ array变量上检查了is_array()并返回true,因此变量被识别为数组。有什么想法吗?
编辑:
我按如下方式定义数组:
$array = array(11, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29);
以这种方式调用函数:(例如:如果我想删除数字11)
$array= removeFromArray(11, $array);
答案 0 :(得分:0)
在调用removeFromArray($ value,$ array)时,如果$ array不是数组,则'in_array()期望参数2为数组'错误出现。
答案 1 :(得分:0)
你的代码很好。这不是答案,只是为了证明你的代码没问题。
我刚刚测试了如下:
<?php
function removeFromArray($value, $array) {
// If value is in the array
if (in_array($value, $array)) {
// Get the key of the value
$key = array_search($value, $array);
// Remove the element
unset($array[$key]);
// Fix the key indexes
$array = array_values($array);
return $array;
}
return false;
}
$array = array(11, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29);
$array= removeFromArray(11, $array);
var_dump($array);
结果:
[vinod@wiplnx01:/home/workspace/php/playground]$ php array_test.php
array(17) {
[0] =>
int(13)
[1] =>
int(14)
[2] =>
int(15)
[3] =>
int(16)
[4] =>
int(17)
[5] =>
int(18)
[6] =>
int(19)
[7] =>
int(20)
[8] =>
int(21)
[9] =>
int(22)
[10] =>
int(23)
[11] =>
int(24)
[12] =>
int(25)
[13] =>
int(26)
[14] =>
int(27)
[15] =>
int(28)
[16] =>
int(29)
}
PHP版本,虽然这不重要:
[vinod@wiplnx01:/home/workspace/php/playground]$ php -v
PHP 5.4.16 (cli) (built: Jun 6 2013 09:20:50)
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies
with Xdebug v2.2.3, Copyright (c) 2002-2013, by Derick Rethans
所以请检查一下你是否有错别字或某事。