Проверьте, соответствует ЛИ значение массиву — PHP

#php

#php

Вопрос:

Можете ли вы помочь мне с этим? Я хочу, чтобы мое имя пользователя и пароль соответствовали заданному мной массиву. Вот код.

     $users = array (
                0 => 
                array (
                  'username' => '10010',
                  'password' => '01019'
                ),
                1 => 
                array (
                  'username' => '10011',
                  'password' => '01151'
                ),
                2 => 
                array (
                  'username' => '10012',
                  'password' => '01214'
                ),
            );

if($user_id == match with 'username' amp;amp; $password_id == match with inputted username's 'password')
  

Спасибо! : D

Комментарии:

1. array_search

Ответ №1:

Попробуйте это:

 <?php
$users = array (
    0 =>
        array (
            'username' => '10010',
            'password' => '01019'
        ),
    1 =>
        array (
            'username' => '10011',
            'password' => '01151'
        ),
    2 =>
        array (
            'username' => '10012',
            'password' => '01214'
        ),
);

/* Change the values in $thisuser array below to test out the result:- */
$thisuser = array (
        'username' => '10010',
        'password' => '01011'
        );

/* This part does the checking:- */
if (is_numeric(array_search($thisuser,$users,true))) { echo "Match found."; }
 else { echo "Match not found."; };

?>
  

Комментарии:

1. Рад, что это помогает. Обратите внимание, что я использую функцию is_numeric перед array_search, так что ваша первая запись (массив 0) по-прежнему имеет значение true .

Ответ №2:

Используйте array_search()

 if (array_search(['username' => $user_id, 'password' => $password_id], $users)) {
  echo 'Found';
} else {
  echo 'Not found';
}
  

https://3v4l.org/cDh53


Если вы найдете обман, который не использует цикл, дайте мне знать, с удовольствием удалю. Я посмотрел.

Комментарии:

1. Я не знаю почему, но он принимает только имя пользователя и пароль последнего значения в массиве. Например, он принимает только 2 => array ( ‘username’ => ‘10012’, ‘password’ => ‘01214’)

2. мой пример ссылки показывает, что это не так, его соответствующий индекс 1

3. кроме того, если это все, что у вас есть в массиве, например, исходный код и вопрос, тогда array_search подойдет.. но если у вас есть другие данные в массиве, который вы не показываете, тогда он не подходит, и вам следует использовать foreach, как указано выше, или, если это действительно большой массив, используйте двоичный поиск или, лучше, запрос к базе данных

4. Это действительно работает! Спасибо за ответ и помощь: D

Ответ №3:

 <?php
$users = array (
    0 =>
        array (
            'username' => '10010',
            'password' => '01019'
        ),
    1 =>
        array (
            'username' => '10011',
            'password' => '01151'
        ),
    2 =>
        array (
            'username' => '10012',
            'password' => '01214'
        ),
);

$user_id = '10011';
$password_id = '01151';

foreach ($users as $values) {
    if($user_id == $values['username'] amp;amp; $password_id == $values['password']) {
        echo "Match Found";
        break;
    }
}
  

Комментарии:

1. Спасибо! Это работает для меня. Я проверю это, если с большим количеством значений массива. Хотел бы я поддержать это.