Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > функция list()


Автор: Vovan222 23.6.2011, 17:13
Привет. Есть строка $fio, которая выглядет так:
Код

$fio = "Иванов Иван Иванович";

Ее нужно распарсить в массив. Делаю так:
Код

list($surname, $name, $patronymic) = explode(' ',$fio);

Все прекрасно работает, однако если $fio будет такой:
Код

$fio = "Иванов Иван";

то после выполнения:
Код

list($surname, $name, $patronymic) = explode(' ',$fio);

PHP выдает ошибки:
Код

Severity: Notice

Message: Undefined offset: 2

Filename: index.php

Line Number: 53

Можно ли как-то обойти это?

Автор: Shogun 23.6.2011, 17:38
Код

$fio = "Иванов Иван Иванович";

$fio_arr = explod(' ', $fio);

if (sizeof($fio_arr)<3) { $fio_arr[] = ''; }

list($surname, $name, $patronymic) = $fio_arr;

Вариантов много... 
if(sizeof...) { list(...) },
switch(sizeof($fio_arr)) { case 2 list($surname, $name),3 ... list($surname, $name, $patronymic)... }

Автор: NewDima 25.6.2011, 16:39
Во-первых, list - не функция, а конструкция языка, во вторых:
Код

list($surname, $name, $patronymic) = array_merge(explode(' ', $fio), array(null, null, null));

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)