in_array()期望参数2是数组,给定布尔值

时间:2013-07-31 15:40:08

标签: php web

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);

2 个答案:

答案 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

所以请检查一下你是否有错别字或某事。