У меня есть набор результатов 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
Вы получаете строку. Поэтому вам нужно разбить строку на использование in_array.
if( $noofupid > 0 && in_array('C', preg_split('//',$perm[0])))
или найти символ в строке
if( $noofupid > 0 && false !== strstr($perm[0], 'C'))
Вы не можете использовать in_array() для строк, вам нужно сначала преобразовать строку в массив:
$array = str_split("CIR");
Вы получите этот массив:
array(3) {
[0]=>
string(1) "C"
[1]=>
string(1) "I"
[2]=>
string(1) "R"
}
Дорогой вы получаете ассоциативное значение в переменной $ 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 изменит ключ на значение и наоборот.