簡體   English   中英

為什么in_array()不能讓我返回true

[英]Why in_array() is not returning me as true

我有一個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( $noofupid > 0 && in_array('C', $perm))
    echo '<option value="C" selected>Create</option>';
else
    echo '<option value="C">Create</option>';

總會執行else部分。 知道為什么上面的方法沒有產生正確的結果嗎?

===編輯====

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

您不能對字符串使用in_array(),而必須先將字符串轉換為數組:

$array = str_split("CIR");

您將獲得以下數組:

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

您正在獲取字符串。 因此,您需要分割字符串以使用in_array。

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

或在字符串中找到字符

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

親愛的您在$ perm變量中獲得了關聯值,因此您無法通過in_array函數直接匹配數組值。

您可以根據情況匹配陣列鍵。 示例:in_array(“ $ keyofPermVariable”,$ 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會將鍵更改為value,反之亦然。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM