Как я могу проверить, есть ли значение в codeigniter result_array () - PullRequest
1 голос
/ 13 февраля 2020

Мне тяжело с этим. Хотя я новичок здесь. Я использую Codeigniter, это код запроса.

<?php
    $is_member = $this->db->query("SELECT user FROM chatroom_members WHERE room='$row->id'");
    $check = $is_member->result_array();
    if (in_array($id, $check)) {
        echo "Match found";
    } else {
        echo "Match not found";
    }
?>

Какие выходные данные Match не найдены

, но print_r($check) дает

Array ( [0] => Array ( [user] => 1 ) [1] => Array ( [user] => 2 )

Так как я собираюсь я думаю, чтобы проверить, находится ли указанное c целое число в массиве, который является многомерным.

Примечание: $ id = 1, который явно находится в массиве, но он все еще говорит, что не найден. Есть ответы? не стесняйтесь поправлять меня, если я делаю что-то не так

Ответы [ 2 ]

1 голос
/ 13 февраля 2020

Я думаю, что лучший способ сделать это - использовать foreach l oop, in_array не будет работать с массивом root.

<?php
$is_member = $this->db->query("SELECT user FROM chatroom_members WHERE room='$row->id'");
$arrays = $is_member->result_array();

$found = false;
foreach ($arrays as $array) {
   if(in_array($id,$array)) {
     $found = true; 
     break;
   }
} 
echo $found === true ? "Match found" : "Match not found";
?>
0 голосов
/ 13 февраля 2020

Если вы уже знаете идентификатор, который вы ищете, и номер комнаты, в которой вы хотите проверить, вы можете воспользоваться этим:

(я предполагаю, что номер комнаты содержится в $row->id и идентификатор пользователя, который вы ищете: $id)

$this->db->select('user');
$this->db->from('chatroom_members');
$this->db->where('room', $row->id);
$this->db->where('user', $id);

$query = $this->db->get();
return ($query->num_rows() == 0) ? false : true;

Вы избавите себя от зацикливания огромного массива результатов (который может или не может быть проблемой в зависимости от того, как большой результат из таблицы), и вы получите простой ответ да / нет. Я использовал return и троичный оператор, но вы можете легко изменить его на if / else и сделать что-то еще, кроме возврата true или false в зависимости от того, что вам нужно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...