У меня есть сложная регулярка, которая разбивает строку на: Имя, Фамилия, Отчество, День рождения, Телефон и Почта. Некоторые значения могут быть необязательными. Эти данные мне нужно разобрать по массиву и отправить в сторонний сервис. Раньше это выглядело вот так:
$result = ["api" => $api_key, "data" => ["lastname" => $req[1], "firstname" => $req[2], "secondname" => $req[3], "birthdate" => $req[4], "phone" => $req[5], "email" => $req[6]]];
В случае, если каких-то данных не было, то туда записывалось null. То есть $req[5] вполне мог быть null, а в $req[6] были бы данные.
Внезапно, сервис, куда я слал данные, сделал валидацию полей и теперь он стал ругаться на null, мол не соответствует поле правилам. Однако, если просто не отправить ключ почты (к примеру), то система запрос принимала и обрабатывала.
Я быстро сделал вот такой костыль:
($req[1]) ? $res['params']['lastname'] = $req[1] : false;
($req[2]) ? $res['params']['firstname'] = $req[2] : false;
($req[3]) ? $res['params']['secondname'] = $req[3] : false;
($req[4]) ? $res['params']['birthdate'] = $req[4] : false;
($req[5]) ? $res['params']['phone'] = $req[5] : false;
($req[6]) ? $res['params']['email'] = $req[6] : false;
Он свою функцию выполняет, но мне кажется, что можно сделать лучше.