我有一个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
答案 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会将键更改为值,反之亦然。