Задача на создание массива на основе списка переменных.
Primary tabs
Здравствуйте. Изучаю книгу Хольцнера. Обнаружил у него задачу, которая не идет у меня в двух онлайн-интепретаторах. Посмотрите, пожалуйста, в чем дело. Ответ дает такой: Array ( )
Условие задачи (Глава. Извлечение переменных из массивов, стр. 94).
А что делать, если требуется выполнить обратную операцию и сформировать
массив на основе списка переменных? Для этого предназначена функция
compact. В качестве аргументов она принимает имена переменных или массивы
имен переменных. Значения переменных с указанными именами становятся
очередными элементами массива.
<?php $firstname = "Сергей"; $lastname = "Банников"; $role = "Редактор"; $subarray = array ("$firstname", "$lastname "); $resultarray = compact ($subarray, "$role"); print_r ($resultarray); ?>
- Log in to post comments
- 8250 reads
vedro-compota
Thu, 04/04/2019 - 19:13
Permalink
Укажите страницу и раздел
Укажите страницу и раздел книги, проставьте ключевые слова.
_____________
матфак вгу и остальная классика =)
vedro-compota
Thu, 04/04/2019 - 19:14
Permalink
м.б. просто выключена функция
на сандбокс (http://sandbox.onlinephpfunctions.com/) выводится предупреждение:
Обновлено: на локальной машине у меня тоже пустой массив, ответ в следующем комментарии.
_____________
матфак вгу и остальная классика =)
vedro-compota
Thu, 04/04/2019 - 19:28
Permalink
имена, а не значения
У вас же в двойные кавычки подставляются сразу значения -- т.е. интерпретор при работе compact() пытался найти в том числе и переменную с именем $Сергей
-- а такой переменной у вас не определено, нужно просто имена переменных без доллара (если бы кавычки были одинарными все равно - без доллара).
Гляньте аналогичный пример тут: https://www.php.net/manual/ru/function.c...
т.е. скорее всего подразумевался код:
_____________
матфак вгу и остальная классика =)
Laven
Thu, 04/04/2019 - 19:41
Permalink
Согласен. Невнимательно
Согласен. Невнимательно скопировал задачу из книги. Теперь все получилось. Спасибо.
vedro-compota
Thu, 04/04/2019 - 19:49
Permalink
Интересно, почему переменные
дело в том, что массив у вас идет как обычная переменная (вместо него будет использованы литералы, которые он содержит), а вот если вы передадите имя переменной, то вместо неё будет использоваться её значение. Тут надо просто понимать, что именно ожидает от пользователя compact().
_____________
матфак вгу и остальная классика =)
vedro-compota
Thu, 04/04/2019 - 19:54
Permalink
двойные кавычки
Любой аргумент должен или быть именем переменной (просто литерал) или быть переменной, значение которой либо содержи имя либо массив имен.
В случае же если вы делаете так:
то вы указываете использовать переменную 'Банников', потому что именно к этому виду приведет подстановка значения в двойные кавычки.
_____________
матфак вгу и остальная классика =)