为什么in_array()不会将我归为真

时间:2015-02-03 13:14:57

标签: php

我有一个MySQLI结果集:

$prems = $mysqli->query($query);
$noofupid = mysqli_num_rows($prems);

我知道找到一行的值为'CIR'。接下来,我将该值取为:

$perm = $prems->fetch_array(MYSQLI_BOTH);

现在我需要检查数组中是否设置了'C'或'I'或'R'值:

if($noofupid > 0)
    echo in_array("C", $perm);  

但是if失败了。

其实我的确切条件是:

if( $noofupid > 0 && in_array('C', $perm))
    echo '<option value="C" selected>Create</option>';
else
    echo '<option value="C">Create</option>';

始终会执行其他部分。知道为什么上面没有产生正确的结果吗?

=== EDIT ====

echo var_dump($perm) ;
echo var_dump($noofupid);

值:

array (size=2)
  0 => string 'CIR' (length=3)
  'property_value' => string 'CIR' (length=3)

int 1

null

int 0

null

int 0

null

int 0

null

int 0

null

int 0

null

int 0

null

int 0

null

int 0

3 个答案:

答案 0 :(得分:1)

你不能在字符串中使用in_array(),你必须先将字符串转换为数组:

$array = str_split("CIR");

你会得到这个数组:

array(3) {
  [0]=>
  string(1) "C"
  [1]=>
  string(1) "I"
  [2]=>
  string(1) "R"
}

答案 1 :(得分:0)

你得到一个字符串。所以你需要拆分字符串以使用in_array。

if( $noofupid > 0 && in_array('C', preg_split('//',$perm[0])))

或找到字符串中的字符

if( $noofupid > 0 && false !== strstr($perm[0], 'C'))

答案 2 :(得分:-1)

亲爱的你在$ perm变量中得到了关联值,所以你不能通过in_array函数直接匹配数组值。

您可以在您的情况下匹配数组键。 例如:in_array(&#34; $ keyofPermVariable&#34;,$ perm)

否则可以通过使用一个更像

的功能来实现
$perm_result = array_flip($perm);
if($noofupid > 0 && in_array("C", $perm_result))
    echo '<option value="C" selected>Create</option>';
else
    echo '<option value="C">Create</option>';

array_flip会将键更改为值,反之亦然。