Почему in_array () не возвращает меня как true

0

У меня есть набор результатов 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
  • 5
    Что показывают var_dump ($ noofupid) и var_dump ($ perm)?
  • 0
    Вы уверены, что ваши запросы к базе данных работают? Вы не делаете никакой проверки ошибок.
Показать ещё 11 комментариев
Теги:

3 ответа

0
Лучший ответ

Вы получаете строку. Поэтому вам нужно разбить строку на использование in_array.

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

или найти символ в строке

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

Вы не можете использовать in_array() для строк, вам нужно сначала преобразовать строку в массив:

$array = str_split("CIR");

Вы получите этот массив:

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

Дорогой вы получаете ассоциативное значение в переменной $ 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 изменит ключ на значение и наоборот.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню