10 мая, 2019 Облегчит вам работу, осваивая некоторые дополнительные функции массива
Это была жаркая ночь несколько лет назад когда я делал школьные заметки предыдущего утра,
Я узнал, что мне задали очень интересное домашнее задание.
Тест, который профессор информатики хотел, чтобы я и мои товарищи выполнили, состоял в том, чтобы взять предложение по нашему выбору (по крайней мере, из дюжины слов) и превратить его в массив с самими словами вместо элементов.
Затем сделайте копию массива и создайте новую переменную, состоящую из строки, содержащей слова, взятые из вновь созданного массива.
Наконец, написав оператор условия, убедитесь, что две строки совпадают, и отправьте сообщение об успехе или ошибке в соответствии с результатом.
Я до сих пор помню, что после первых нескольких часов экспериментов с созданием нескольких переменных, циклами foreach здесь и там и чем-то еще Я повесил блокнот на стену и пошел спать.
Уровень разочарования: 100/100;
Имейте в виду, что я все еще был студентом, и язык PHP был для меня чем-то новым.
На следующий день тот же профессор показал мне, что для выполнения упражнения было бы достаточно использовать функции, уже встроенные в язык , и 3 строк было бы достаточно вместо 600, которые я использовал.
Это навсегда изменило мою карьеру, и я уверен, что как только вы это поймете, это изменит и вашу.
Принцип здесь таков: НЕ ИЗОБРЕТАЙТЕ ВЕЛОСИПЕД ЗАНОВО
В течение последних нескольких недель мы увидели, что существуют различные категории функций, которые предоставляет PHP для того, чтобы выгодно работать с массивами и элементами, присутствующими в них.
Если вы здесь новичок или не внимательно следили за серией, эта серия была разделена на несколько частей ,
в первой части мы рассмотрели, что такое массивы и как их наилучшим образом использовать с помощью встроенных функций в PHP , во второй главе были связаны все наиболее популярные функции ,
Затем мы увидели, как фильтровать элементы массива (что является одной из основных функций, используемых веб-разработчиком) и, наконец, как сортировать элементы массива самостоятельно.
В этой главе вы увидите некоторые дополнительные функции, некоторые секреты и советы, которые вы можете использовать прямо сейчас.
Большинство из этих функций очень просты для понимания, другие вы найдете по мере продолжения своей карьеры в области веб-разработки в рамках PHP и основных пакетах.
Функции, которые вы изучите сегодня
взрывать() взрывать() array_sum() array_product() array_column() сжимать() извлекать()
взорваться()
Это была первая функция, которой профессор научил меня в тот день.
Нет абсолютно никакой необходимости выполнять несколько циклов или использовать сложные решения для того, чтобы получить массив из строки .
PHP предоставляет эту встроенную функцию в своем ядре и был реализован для этого.
Функция explode() имеет 3 параметра.
Первые два обязательны, третий не является обязательным и, если быть откровенным, даже не очень используется.
Первым параметром является разделитель , как упоминалось выше, в нашем случае он будет состоять из пробелов,
Второй параметр – это сама строка | , здесь нечего говорить.
Третий параметр немного сложнее и состоит из предела .
Предел может быть положительным, отрицательным или нулевым.
Если значение отрицательное, возвращаются все компоненты, кроме последнего.
Если указанный предел равен 0, то рассматриваемый предел будет составлять один элемент.
Положительное ограничение вместо этого возвращает массив, содержащий максимальное количество элементов, равное указанному числу.
Сейчас,
Что нам нужно, когда мы хотим создать разные элементы из строки?
Это просто!
нам нужна строка и элементы, которые ее составляют.
Давайте взглянем на этот пример:
“Привет, Хо Привет Хо Он выключен работать Мы Идем”
Это строка, элементы, которые нам нужны и которые должны быть вставлены внутрь массива, – это слова.
Самый простой способ вставить отдельные слова – это использовать разделители, в данном случае, пробелы, разделяющие слова
Результатом этой функции будет массив из 10 элементов.
Давайте проанализируем, как структурирована эта строка:
Вот пример, в котором используется третий параметр:
$str = "Hi Ho Hi Ho Its Off To Work We Go";
// With no limit
print_r(explode('', $str));
// With limit
print_r(explode('', $str, 2));
Array
(
[0] => Hi
[1] => Ho
[2] => Hi
[3] => Ho
[4] => Its
[5] => Off
[6] => To
[7] => Work
[8] => We
[9] => Go
)
Array
(
[0] => Hi
[1] => Ho Hi Ho Its Off To Work We Go
)
Существует несколько факторов, которые необходимо учитывать при применении функции explode() :
Если разделитель состоит из пустой строки, функция вернет значение FALSE, если разделитель отсутствует в строке и указанное ограничение отрицательное, возвращаемое значение будет пустой строкой.
Вы можете найти другой пример функции разнесения в W3schools
взорваться()
В предыдущем абзаце вы видели, как получить массив из строки,
Как вы уже поняли, PHP также позволяет выполнять противоположную операцию .
Предоставляя массив функции implode() , вы получите строку, содержащую значения элементов массива,
Ничего не может быть проще.
Следует отметить некоторые особенности,
Поскольку функция была первоначально опубликована в PHP 4, неудивительно, что после всех этих лет и разных версий языка функция изменилась по сравнению с тем, чем она была изначально.
Давайте взглянем глубже:
implode() имеет два атрибута:
Первый официально называется glue и состоит из строки, содержащей набор символов или слов, которые будут разделять различные элементы массива.
Скорее уникальный, чем редкий, даже будучи первым параметром функции, он не является обязательным полем,
На самом деле его можно опустить и заменить вторым параметром этой функции.
Вторым параметром функции является массив,
В конечном итоге он будет преобразован в строку.
Вы хотите знать какую-то особенность,
Массив также не является обязательным полем.
Как это возможно?
PHP позволяет вызывать эту функцию без указания каких-либо параметров , в результате будет выдана пустая строковая переменная.
Это может показаться положительным фактором, но поскольку ошибки нет, вы должны уделять еще больше внимания результату, полученному с помощью функции Вот пример:
$dwarfs = ['Doc', 'Grumpy', 'Happy', 'Sleepy', 'Dopey', 'Bashful', 'Sneezy'];
$string = implode(",", $dwarfs);
echo $string; // Doc, Grumpy, Happy, Sleepy, Dopey, Bashful, Sneezy
массив_суммы()
Эта функция является ярлыком для конкретного использования элементов в массиве.
Предположим, у вас есть массив, содержащий несколько чисел, и вы хотите вычислить сумму между ними.
Наиболее логичным рассуждением было бы создать цикл и суммировать элементы внутри переменной .
array_sum() выполняет именно эту операцию автоматически и в одной строке.
Он работает как с числовыми, так и с ассоциативными массивами.
Значения, которые рассматривает эта функция, являются целыми числами или числами с плавающей точкой, в то время как возвращаемое значение представляет собой значение числового типа, которое может быть равно 0 (если массив пуст) или общая сумма элементов.
$numbers = array(
"first" => 11.4,
"second" => 4.1,
"third" => 8.9
);
echo array_sum($numbers); // 24.4
Он также может быть использован для получения среднего значения массива чисел. Скопируйте и вставьте эту строку ниже:
$average_of_numbers = array_sum($numbers) / count($numbers); // 8.13
массив_продукт()
Невероятно похоже на array_sum()
Как синтаксис, так и условия те же, что и в предыдущей главе.
Единственное различие между двумя функциями состоит в том, что конечный результат array_product() является произведением всех чисел, присутствующих между элементами .
$numbers = array(2, 4, 6, 8); echo array_product($numbers); // 384
Любопытство: если массив, выбранный в качестве параметра, является пустым массивом, вопреки тому, что вы могли бы подумать, получаемое значение равно не 0 или НУЛЮ, а числу 1.
Вот демонстрация ниже.
echo array_product([]); // 1
массив_колонок()
Эта функция возвращает значения , присутствующие в столбце ассоциативного массива, предоставленного в качестве параметра ,
array_column() поставляется с версии 5.5 PHP и использует 3 параметра, из которых первые 2 являются обязательными.
Первый параметр – это массив , из которого мы хотим получить значения,
Второй параметр состоит из имени ключа массива .
Обычно возвращаемый массив является числовым, но, указывая на другой из других столбцов, присутствующих в выбранном массиве, возвращаемый массив будет ассоциативного типа и будет содержать значения третьего поля в качестве ключа.
Учитывая все движущиеся части, используемые этой функцией, нетрудно понять, что ее использование может привести к нескольким ошибкам,
На самом деле,
это довольно сложная функция, и я советую вам всегда быть внимательным к получаемому результату и к тому, чтобы в нем не было ошибок или предупреждений.
$dwarfs = array(
array(
'id' => 1,
'name' => 'Doc',
'voice' => 'Roy Atwell'
),
array(
'id' => 2,
'name' => 'Grumpy',
'voice' => 'Pinto Colvig'
),
array(
'id' => 3,
'name' => 'Happy',
'voice' => 'Otis Harlan'
),
array(
'id' => 4,
'name' => 'Sleepy',
'voice' => 'Pinto Colvig'
),
array(
'id' => 5,
'name' => 'Dopey',
'voice' => 'Eddie Collins'
),
array(
'id' => 6,
'name' => 'Bashful',
'voice' => 'Scotty Mattraw'
),
array(
'id' => 7,
'name' => 'Sneezy',
'voice' => 'Billy Gilbert'
)
);
print_r(array_column($dwarfs, 'name', 'id'));
Array
(
1 => Doc
2 => Grumpy
3 => Happy
4 => Sleepy
5 => Dopey
6 => Bashful
7 => Sneezy
)
компактный()
Если вы никогда не использовали ни один из фреймворков PHP , наверняка вы уже сталкивались с этой функцией.
Если вы никогда не использовали фреймворк PHP или хотите взглянуть на то, что доступно на рынке.
Я написал статью, в которой рассмотрел 24 наиболее популярных фреймворка и взял интервью у разработчиков некоторых из них.
compact() широко используется для создания уникальных переменных, которые могут быть отправлены в представления в приложениях, использующих парадигму MVC .
Некоторые фреймворки PHP даже изменили эту функцию, чтобы сделать ее более подходящей для их нужд,
Laravel использует с() функция, например
Как уже было сказано, эта функция создает единую переменную типа array, содержащую все переменные и значения, вставленные в качестве параметров.
compact() проверяет код и ищет все переменные с заданным именем.
Вот конкретный пример:
$name = "Doc";
$voice = "Roy Atwell";
$movie = "Snow White and the Seven Dwarfs";
print_r(compact("movie", "empty_variable", array("name", "voice")));
Array
(
[movie] => Snow White and the Seven Dwarfs
[name] => Doc
[voice] => Roy Atwell
)
извлечь()
Давайте немного займемся информатикой: В информатике таблица символов – это структура данных, используемая лингвистическим переводчиком, в случае PHP – интерпретатором.
Интерпретируемый язык – это тип языка программирования .
Большинство его реализаций выполняют инструкции напрямую,
Нет необходимости предварительно компилировать код в машинные языковые инструкции.
Подробнее я расскажу об этом в серии PHP Basic для экспертов
Каждый идентификатор, называемый символом в исходном коде программы, связан с информацией о его объявлении.
В таблице символов хранится информация о символе.
Функция extract() импортирует переменные в текущую таблицу символов из массива.
Простыми словами, это приводит к прямо противоположному результату compact() .
Он имеет 3 параметра, 2 из которых не являются обязательными.
Первым параметром является массив , он должен быть ассоциативного типа.
Второй параметр состоит из одного из доступных флагов , он указывает, как обрабатываются ключи в случае неверных вводов.
Доступно несколько флагов:
ЭКСТРА-ПЕРЕЗАПИСЬ В случае столкновения функция перезаписывает существующую переменную.
Если ключ не указан, этот флаг будет значением по умолчанию.
ДОПОЛНИТЕЛЬНЫЙ_СКИП В случае столкновения функция не перезаписывает существующую переменную.
EXTRA_PREFIX_САМЫЙ В случае коллизии введите префикс в качестве префикса имени переменной.
EXTRA_PREFIX_ALL ДОПОЛНИТЕЛЬНЫЕ ИСПРАВЛЕНИЯ//Он добавляет префикс ко всем именам переменных.
ЗНАЧЕНИЕ EXTRA_PREFIX_INVALID Он добавляет префикс только к именам недопустимых или числовых переменных.
ЭКСТРА -ЕСЛИ_СУЩЕСТВУЕТ Он перезаписывает переменную только в том случае, если она уже существует в текущей таблице символов, в противном случае он не будет выполнять никаких операций.
EXTRA_PREFIX_IF_EXISTS Создавайте имена переменных с префиксом только в том случае, если нефиксированная версия той же переменной уже присутствует в текущей таблице символов.
ДОПОЛНИТЕЛЬНЫЕ ССЫЛКИ Извлекает переменные в качестве ссылок. Это означает, что значения переменных относятся к значениям параметров массива.
Вы можете использовать этот флаг отдельно или комбинировать его с любым другим флагом (в данном случае используйте ИЛИ).
Вы можете получить более подробное представление об этих флагах, используя официальное руководство по PHP
Третий параметр, также необязательный, является переменной строкового типа и состоит из префикса, с которым будут называться созданные переменные.
Как и в случае с некоторыми функциями, уже рассмотренными в этой статье, массив берется в качестве ссылки, что переводится в два значения.
Во-первых, изменяется сам массив , а не переменная, возвращаемая из массива.
Вторая переменная, возвращаемая функцией, имеет другой тип в данном случае целочисленный тип и указывает количество переменных, импортированных в таблицу символов.
В некотором смысле эта функция тесно связана с интерпретатором PHP.
Это означает, что нам нужно уделять больше внимания используемым ценностям.
$name = "Doc";
$dwarf = array(
"movie" => "Snow White and the Seven Dwarfs",
"name" => "Happy",
"voice" => "Roy Atwell"
);
extract($dwarf, EXTR_PREFIX_SAME, "pre");
echo "$movie, $name, $voice, $pre_name";
// Snow White and the Seven Dwarfs, Doc, Roy Atwell, Happy
Фраза, несколько раз подчеркнутая как опытными разработчиками, так и самим руководством, заключается в том, что вам не нужно использовать extract() с ненадежной датой в качестве глобальных переменных, таких как $ _GET или $ _FILES
Завершение серии
Что касается других серий в моем блоге ( перейдите сюда, чтобы просмотреть их ), мы снова достигли конца другого пути.
В этой серии мы рассмотрели БОЛЕЕ 50 ФУНКЦИЙ которые более или менее непосредственно связаны с массивами и их элементами, мы перешли от базовых функций к конкретным секторам, таким как упорядочение и фильтрация элементов .
Хотя некоторые фреймворки PHP теперь используют коллекции вместо массивов, знание того, как они работают и как их лучше использовать, не только поможет вам глубже понять суть этого языка программирования, но и сделает вас лучшим программистом, а это бесценно на любом этапе вашей карьеры.
Эта серия подошла к концу,
Это не значит, что вам нужно заканчивать обучение!
Совсем наоборот,
Существует множество информации и платформ, которые были созданы только для того, чтобы сделать вас лучшим программистом и овладеть новыми навыками.
На мой взгляд, одна из лучших платформ, на которой я многому научился, – это teamtreehouse.com .
У них есть классы, видео и викторины по PHP, Python, созданию API и тому, как начать свой собственный бизнес, если вы фрилансер.
Сегодня для вас также есть 4 месяца отпуска по их Базовому годовому плану
НАЖМИТЕ ЗДЕСЬ И ВОСПОЛЬЗУЙТЕСЬ ПРЕДЛОЖЕНИЕМ ПРЯМО СЕЙЧАС
Мой последний совет – вернуться к этому сообщению и другим в этой серии несколько раз в течение следующих нескольких месяцев (добавьте его в закладку вашего браузера, чтобы упростить задачу) и просмотрите функции, которые вы считаете наиболее интересными.
Как только вы глубоко поймете, как они работают, вы увидите, что применять их к повседневному коду будет намного проще.
Оригинал: “https://dev.to/anastasionico/beyond-popular-array-functions-in-php-with-examples-2bd0”