Всем привет, помогите реализовать функцию нахождение id водителя по имени в массиве. У меня массив заполнен таким образом: PHP: $cache = $database -> query("SELECT * FROM " . DATABASE_DRIVERS_TABLE); if($cache -> num_rows == 0) { $database -> close(); exit("Error: Drivers table is empty!"); } while($row = $cache -> fetch_assoc()) { $GLOBALS['drivers_list'][$row['id']] = array('name' => $row['name'], 'truck' => $row['truck'], 'trailer' => $row['trailer'], 'phone' => $row['phone']); } Массив заполняется (проверял). Ещё у меня есть функция: PHP: public function GetNameFromID($id, &$name) { if(!isset($GLOBALS['drivers_list'])) { DriverController::FillDriversList(); } $name = $GLOBALS['drivers_list'][$id]['name']; } Эта функция тоже работает нормально (проверял) Но мне нужна ещё одна функция которая узнаёт id водителя через переданное имя и записывает его в переменную что-то вроде такого: public function GetIDByName($name, &$id). Но как бы я не морочился у меня не получается правильно реализовать эту функцию. Не могу узнать id текущего массива если даже нахожу имя. Пытался сделать такое: PHP: foreach($GLOBALS['drivers_list'] as $driver) { if(strcmp($driver['name'], 'Ramazon Murodov') == 0) { //дальше трабла } } Прощу вас помочь. И если не сложно заодно посоветуйте улучшение для уже имеющихся функций или покритикуйте где я бы смог сделать лучше и удобнее. Спасибо!
Задавайте критерий отбора еще на стадии формирования запроса. Имен может быть найдено несколько, если соотв. поле не уникальное. --- Добавлено --- Отсеивать лишние также можно еще на стадии выполнения запроса: LIMIT 1.
Избавьтесь от "$var -> prop" на "$var->prop" Зачем вы сюда пихаете $GLOBALS['drivers_list'][$row['id']] ? Зачем по ссылку передаёте аргумент в функции? PHP: public function GetIDByName($name) { foreach($this->drivers as $driver) { if($driver['name'] == $name) return $driver; return false; } }
Спасибо за ответы Вот эту часть не понял --- Добавлено --- Имен может быть несколько, но ID водителя разное (уникальное автоинкремент)
@Geebrox, я о том, что вы должны возвращать список идентификаторов или не допускать возможность совпадения имен в таблице.