PHP - приведение строки к int в аргументах list()?

Я уточняю свой код, и у меня есть пара мест, где мне нужно приводить строки как целые числа, но ограничения функции list() отговаривают меня от использования list(), Конкретный пример:

$x = '12-31-2010';

$explode = explode("-", $x);

// Need to do the following because e.g. echo gettype($explode[0]) ---> string

$month = (int)$explode[0];
$day   = (int)$explode[1];
$year  = (int)$explode[2];

Что я хотел бы сделать (но получить фатальную ошибку), чтобы сделать вещи немного более аккуратными:

list((int)$month, (int)$day, (int)$year) = explode("-", $x); // I want echo(gettype) ---> integer for each variable

Есть ли способ сделать это или лучше всего я могу сделать следующее?

list($month, $day, $year) = explode("-", $x);

$month = (int)$month;
$day   = (int)$day;
$year  = (int)$year;

2 ответа

Решение

По этой ссылке:-

Как преобразовать значения массива из строки в Int?

Вы можете сделать это, как показано ниже:

list($month, $day, $year) = array_map('intval', explode('-', $x));

Если вам нужен одинаковый тип для каждого элемента в массиве, вы можете передать массив через array_map прежде чем назначить его list(...):

$x = '12-31-2010';

list($month, $day, $year) = array_map('intval', explode("-", $x));
Другие вопросы по тегам