【问题标题】:PHP in_array isn't finding a value that is therePHP in_array 没有找到存在的值
【发布时间】:2011-10-21 15:06:02
【问题描述】:

我有一个名为 $friend_array 的数组。当我 print_r($friend_array) 它看起来像这样:

Array ( [0] => 3,2,5 ) 

我还有一个名为 $uid 的变量,它是从 url 中提取的。

在我正在测试的页面上,$uid 的值为 3,因此它在数组中。

但是,以下是说它不存在:

if(in_array($uid, $friend_array)){
  $is_friend = true;
}else{
  $is_friend = false;

这总是返回 false。我回显了 $uid,它是 3。我打印数组并且 3 在那里。

我做错了什么?任何帮助将不胜感激!

【问题讨论】:

  • 如果你尝试 in_array( $uid, $friend_array[0] ) 会发生什么
  • 值得一提:$is_friend = in_array($uid, $friend_array) 的可读性更强,并且完全相同
  • 这些值来自 SQL。我有一个名为“friend_array”的字段,它包含一个逗号分隔的值列表。我需要在我的while循环中做一个foreach吗?我对数组很糟糕。

标签: php arrays search


【解决方案1】:

输出

Array ( [0] => 3,2,5 ) 

... 如果数组是由这样的东西创建的,则会产生:

$friend_array = array();
array_push($friend_array, '3,2,5');
print_r($friend_array);

根据你的问题,我认为这不是你的本意。

如果要将三个值添加到数组的前三个索引中,请执行以下操作:

$friend_array = array();
array_push($friend_array, '3');
array_push($friend_array, '2');
array_push($friend_array, '5');

或者,作为array_push()的简写:

$friend_array = array();
$friend_array[] = '3';
$friend_array[] = '2';
$friend_array[] = '5';

【讨论】:

  • 这真的很有帮助......我想我需要阅读更多关于数组的内容,看看是否有更有效的方法来做到这一点。感谢您的回复!
【解决方案2】:

Array ( [0] => 3,2,5 ) 表示数组元素0 是一个字符串3,2,5,因此,在您执行is_array 之前,请检查$uid,因此您必须首先使用@987654327 将该字符串分解为一个数组@ 作为分隔符,然后检查$uid

// $friend_array contains as its first element a string that
// you want to make into the "real" friend array:
$friend_array = explode(',', $friend_array[0]);

if(in_array($uid, $friend_array)){
  $is_friend = true;
}else{
  $is_friend = false;
}

Working example

【讨论】:

    【解决方案3】:

    看起来您的 $friend_array 设置错误。 3、2 和 5 的每个值都需要在数组中拥有自己的键才能使 in_array 起作用。

    例子:

    $friend_array[] = 3;
    $friend_array[] = 2;
    $firned_array[] = 5;
    

    您的上述 if 语句将正常工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-05-02
      • 2012-10-05
      • 1970-01-01
      • 2014-05-27
      • 1970-01-01
      • 2019-06-29
      • 1970-01-01
      • 2013-03-30
      相关资源
      最近更新 更多