Здравствуйте, изучаю язык только неделю, добрался до массивов. Программа должна выдать данные о человеке если он есть в массиве, иначе написать что такого человека нет. Проблема в том, что в любом случае он выдает что его нет. В переменную Found всегда приходит false. С чем связана ошибка и как ее исправить? Заранее благодарю за помощь PHP: <form method ='POST' > <p> Введите фамилию <input type ='string' name = 'name'></p> <p><input type="submit" name="submit" value="отправить"> </p> <br> <?php $people = array("Сеченов" => array("Имя" => "Виктор", "Дата рождения" => "05.12.2000"), "Горохина"=> array("Имя" => "Кира", "Дата рождения" => "11.12.2000"), "Кудяев"=> array("Имя" => "Сергей", "Дата рождения" => "27.11.2000"), "Языкова"=> array("Имя" => "Дарья", "Дата рождения" => "09.06.2000"), "Филенков"=> array("Имя" => "Антон", "Дата рождения" => "24.01.2000") ); if (isset($_POST['submit'])){ $Surname = $_POST['name']; $Found = array_search("$Surname", $people); if ($Found === false) { echo "Такого человека нет"; } else { echo $people [$Surname]["Имя"] ["Дата рождения"]; } print_r($people); } ?> От модератора: Пользуйтесь кнопкой </> для вставки кода
ваш запрос успешно доставлен преподавателю. За неделю освоил синтаксис... POST/GET уже понимает, массивы пишет, функции, условия... и тут на - ничего не работает и хз почему. Врут и не краснеют.
1. Функция array_search: Осуществляет поиск данного значения в массиве и возвращает ключ первого найденного элемента в случае успешного выполнения. Для поиска по ключу стоит юзать array_key_exists Кроме того можно проверить установлен ли этот элемент массива по ключу: Код (Text): if (!isset($people[$Surname])) {echo "Такого человека нет"; } else {...} Но лучше array_key_exists т.к. в случае, если человек, например, стёрт из базы и теперь там вместо его данных null функция вернёт true. 2. Зачем в 18-й строке вы обращаетесь к 3-х мерному массиву? У вас он двумерный. Код (Text): echo $people[$Surname]["Имя"] . ' ' . $people[$Surname]["Дата рождения"];
Спасибо за помощь, программа заработала --- Добавлено --- Спасибо за помощь --- Добавлено --- изучаю действительно где-то неделю, т.к обучение того требует. Вглубь капать время на парах и дома не позволяет, изучаем только так, поэтому и ошибки есть у меня, ибо не все полностью понимаю
А потом приходят такие на работу, и им надо самые основы объяснять. Как я недавно одному объяснял, почему рекурсия работает. Спрашиваю: "Что вам читали"? Перечисляет кучу языков, в том числе ассемблер. Я ему: "Вам читали ассемблер, и ты не в курсе что такое стек вызовов?"
Хм, в ассемблере при вызове процедуры в стек кладётся адрес возврата и вообще стек один из основных инструментов работы процессора, странно Офф: Вообще меня очень удивило, когда я стал читать раздел - народ пишет какие-то уже нетривиальные вещи, работает с json, какими-то библиотеками и т.д. при этом вообще не понимая как работают массивы, синтаксис, типы данных и т.д. Очень странно как они вообще что-то пишут и неужели на фрилансе?
Потому что они копипастой программируют. До какого-то невысокого уровня может прокатить, потом крушение самооценки, депрессия, запой...