检查数组php中是否存在值

时间:2017-12-15 16:49:59

标签: php arrays

检查数组中是否存在值时出现问题。我在数据库中有字段,我在JSON中保存我的数据,我这样做:

$this_will_be_saved = json_encode($array);

现在我需要向数组中添加一些数据,但我需要检查数组是否已经包含该元素:

$this_will_be_saved = json_decode($this_will_be_saved, true);

解码数组结构:

array(5) {
  [0]=>
  array(2) {
    ["rating"]=>
    int(9)
    ["userid"]=>
    int(1)
  }
  [1]=>
  array(2) {
    ["rating"]=>
    int(9)
    ["userid"]=>
    int(1)
  }
  [2]=>
  array(2) {
    ["rating"]=>
    int(9)
    ["userid"]=>
    int(1)
  }
  [3]=>
  array(2) {
    ["rating"]=>
    int(1)
    ["userid"]=>
    int(1)
  }
  [4]=>
  array(2) {
    ["rating"]=>
    int(7)
    ["userid"]=>
    int(1)
  }
}

我尝试检查数组中是否存在新增值但array_search无法正常工作:/

$key = array_search($userid, array_column($this_will_be_saved, 'userid'));
if ( $key ) {
    // found
} else {
    // not found
}

它总是没有创建任何东西:/即使我的用户ID已经存在......

1 个答案:

答案 0 :(得分:1)

array_search()返回第一个相应的键,如果它在数组中找到值。

在布尔上下文中计算时,数组的第一个键是0,与false相同(当它在数组中找不到值时,由array_search()返回)。登记/> if表达式就是这样的上下文(代码中为if ($key))。

因此,如果$userid1,则array_search()会返回0,而if语句会正确获取else分支。

使用in_array()检查数组中是否存在值:

$found = in_array($userid, array_column($this_will_be_saved, 'userid'));
if ($found) {
    // found
} else {
    // not found
}