#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';
}
Если вы найдете обман, который не использует цикл, дайте мне знать, с удовольствием удалю. Я посмотрел.
Комментарии:
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. Спасибо! Это работает для меня. Я проверю это, если с большим количеством значений массива. Хотел бы я поддержать это.