-3

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($value, $array), if 条件时,我收到错误消息:“in_array() 期望参数 2 是数组,布尔值给定”。这发生在数组的任何元素上。

我在 $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);
4

2 回答 2

0

在调用 removeFromArray($value, $array) 时,如果 $array 不是数组,则出现“in_array() 期望参数 2 为数组”错误。

于 2013-07-31T15:49:52.087 回答
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

所以请检查您是否有错别字或其他地方。

于 2013-07-31T15:57:31.447 回答