@chupok

PHP: как определить значение найденного ключа в массиве?

Всем привет!

Имеется некий массив:

$arr = array (
	"k1" => "v1",
	"k2" => "v2"
);


Необходимо в массиве найти ключ и соответствующее ему значение, при этом ключ и значение записываются в разные переменные (разные переменные не для каждой пары, а в общем виде, то есть получается две переменные).

Ключ нахожу так:

$var1 = array_key_exists($login, $arr);

Здесь $login - переменная, в которую записываются вводимые пользователем данные:

$login = trim($_POST["login"]);

Проблема в том, что никак не могу определить значение найденного ключа.

Пытался таким образом:

$var2 = in_array($password, $arr); // $password - по аналогии с логином


Однако при тестовом вывводе через echo выдавалось true, хотя необходимо вывести строку.

Понимаю, что все делается иначе: используется БД, кэширование-соль, раздельные файлы и многое другое; но пока только учусь на велосипедах.

P.S.: Если неверно объяснил ситуацию, скажите: попробую сформулировать проблему иначе.

Спасибо!
  • Вопрос задан
  • 2865 просмотров
Решения вопроса 1
KorsaR-ZN
@KorsaR-ZN
Не понятна суть вопроса совсем, мало деталей...
Функции array_key_exists и in_array, проверяют наличия в массиве нужного ключа или значения.

Что именно вам нужно?
У Вас есть массив, где ключ это логин, а значение это пароль?
$arr = [
'user1' => '123',
'user2' => '124'
];


да? или что?

Вообще, чтоб найти нужный ключ и соответствующие ему значение:
$login = trim($_POST['login']);

if (isset($users[$login ]) {
   $key = $login;
   $value = $users[$login];
} else {
  echo 'Нет нужного ключа в массиве';
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Roquie
@Roquie
$users = [
  'user1' => '123456'
];

// post request ...
$post = array_map('trim', $_POST);
if (isset($users[$post['login']]) && isset($post['password']) && $users[$post['login']] === $post['password'])
{
   //login successful
   $login = $post['login'];
   $password = $users[$post['login']];
}
else
{
   // paste error to session and redirect to ths page. use pattern PRG
   header('Location: http://example.com/redirect_to_this_page');
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
от 300 000 до 500 000 ₽
30 апр. 2024, в 18:47
40000 руб./за проект
30 апр. 2024, в 16:35
5000 руб./за проект