Функция массива в PHP [Part 2]

в первая часть этой сериивы увидели некоторые из наиболее часто используемых функций массива, доступных в языке PHP,

К счастью, после многих лет эволюции и публикации новых версий языка этот список функций работы с массивами все еще длинный, почти кажется, что он никогда не заканчивается.

Давайте посмотрим на другие функции массива те, что в списке ниже, немного менее распространены, но здесь вы становитесь экспертом в языке PHP.

О сериале

Этот пост в блоге из серии » Выставлен массив PHP«.

Если вы еще не читали другие статьи

взгляните на них:
Открытый массив PHP (часть первая)
Создание массивов и управление ими

массив_реверс()

Функция array_reverse() забавная и в то же время очень полезная. невероятно прост в использовании.

array_reverse() на самом деле принимает массив в качестве первого и единственного обязательного параметра и меняет порядок элементов в заданном массиве.

Эта функция также имеет еще один параметр, в данном случае необязательный, который состоит из переменной типа bool, если второй параметр верен, цифровые клавиши будут сохранены если вместо этого параметр имеет значение false или параметр не указан, порядок будет упорядочен в соответствии с элементами, присутствующими в массиве.

Обратите внимание, что если ключи не числовые, они всегда будут сохраняться и второй параметр на них не повлияет.

$dwarfs = array('Doc', 'Grumpy', 'Happy', 'Sleepy', 'Dopey', 'Bashful', 'Sneezy');
$sfrawd = array_reverse($dwarfs); 
print_r($sfrawd); 
Array ( 
    [0] => Sneezy 
    [1] => Bashful 
    [2] => Dopey 
    [3] => Sleepy 
    [4] => Happy 
    [5] => Grumpy 
    [6] => Doc )

массив_флип()

Функция array_flip принимает массив в качестве параметра и возвращает массив, в котором он обменял ключи на значения его можно рассматривать как оригинальный способ получить ключи массива или для десятков разных целей.

Эта функция также имеет несколько ограничений, например, ключи должны соответствовать точному типу как указано в PHP, ключ может быть только целым числом или строкой, иначе вы получите предупреждение и функция не будет работать.

Еще одна особенность, на которую нужно обратить внимание, это количество одинаковых ключей, ведь будет использоваться только последний среди них, а все остальные будут утеряны.

$dwarfs = array('Doc', 'Grumpy', 'Happy', 'Sleepy', 'Dopey', 'Bashful', 'Sneezy');
$flipped = array_flip($dwarfs); 
Array ( 
    [Doc] => 0 
    [Grumpy] => 1 
    [Happy] => 2 
    [Sleepy] => 3 
    [Dopey] => 4 
    [Bashful] => 5 
    [Sneezy] => 6 )

Вот другие примеры использования array_flip

array_rand()

По общему признанию, функция array_rand() немного странная, и если вы решите ее использовать вы должны обратить внимание, что результат, который вы хотите получить, находится в выбранном формате.

Эта функция действительно может возвращать массив, целое число или даже строку.

Работа array_rand() состоит в том, чтобы взять и вернуть один или несколько ключей из элементов, присутствующих в массиве.

Будучи вставленной в PHP 4, эта функция довольно старая, но с тех пор она несколько раз изменялась.

Например, начиная с PHP 7.1, функция array_rand() использует новый алгоритм Mersenne Twister для генерации своих чисел.

Хотя этот алгоритм случайным образом берет числа, он не подходит для криптографических целей.

$dwarfs = array( 
    'zero' => 'Doc', 
    'first' => 'Grumpy', 
    'second' => 'Happy', 
    'third' => 'Sleepy', 
    'fourth' => 'Dopey', 
    'fifth' => 'Bashful', 
    'sixth' => 'Sneezy' 
);

print_r(array_rand($dwarfs, 1)); 
'Second' print_r(array_rand($dwarfs, 2)); 
Array ( 
    [0] => 'second' 
    [1] => 'fifth' 
)

перемешать()

Несмотря на схожесть, функция shuffle() отличается от предыдущей функции своим результатом.

shuffle() рандомизирует элементы, присутствующие в массивекоторые передаются по ссылкам, а не по значению, и в то же время возвращают логическое значение (true или false) в зависимости от того, завершилось ли перетасовка успешно или нет.

Эта функция использует алгоритм Marsenne Twister, что делает ее небезопасной и уж точно не пригодной для криптографических целей.

$dwarfs = array('Doc', 'Grumpy', 'Happy', 'Sleepy', 'Dopey', 'Bashful', 'Sneezy');
print_r(shuffle($dwarfs)); 
Array ( 
    [0] => Happy 
    [1] => Doc 
    [2] => Sleepy 
    [3] => Grumpy 
    [4] => Bashful 
    [5] => Sneezy 
    [6] => Dopey 
)

массив_заменить()

array_replace() заменяет элементы в массиве.

Он принимает два разных типа параметров, назовем их входным параметром и замещающим параметром.

Входной параметр является параметром типа массива и представляет собой массив, с которым мы хотим работать, параметр замены состоит из одного или нескольких массивов, и это массивы, содержащие элементы, которые мы хотим использовать для замены элементов первого.

Если во втором массиве у нас тот же ключ, что и в первом, то значение второго массива заменит значение первого.

если есть третий массив и его ключи также присутствуют во втором и первом массивах, то значение третьего массива заменит оба предыдущих значения.

Взгляните на примеры ниже.

$dwarfs = array('Doc', 'Grumpy', 'Happy', 'Sleepy', 'Dopey', 'Bashful', 'Sneezy');
$originals = array(0 => "Mickey Mouse", 4 => "Pete"); 
$originals2 = array(0 => "Goofy"); 
$disney= array_replace($dwarfs, $originals, $originals2); 
print_r($disney); 
Array ( 
    [0] => Goofy 
    [1] => Grumpy 
    [2] => Happy 
    [3] => Sleepy 
    [4] => Pete 
    [5] => Bashful 
    [6] => Sneezy 
)

array_replace() не является рекурсивным, что означает, что эта функция не будет рекурсивно обращаться к массивам и применять тот же процесс к внутреннему значению. Если вам нужна эта функциональность, вы можете использовать array_replace_recursive() и указать ключ для каждого массива.

Вот короткое видео, которое объясняет суть array_replace.

массив_пад()

Когда вы прочитаете руководство, вы увидите, что эту функцию массива немного сложно понять сразу, мне потребовалось несколько минут, чтобы найти применение в реальном мире, но я уверен, что при небольшом воображении вы найдете ее для себя. быть очень полезным.

array_pad() добавляет элементы указанного типа (могут быть целыми числами, строками и т. д.) в массив.

Он принимает во внимание три параметра, первый из которых является входным массивом,

второй параметр состоит из окончательного размера, который мы хотим, чтобы массив стал (это сложно, поэтому будьте осторожны, если число положительное, мы добавляем значения в конец массива, если число отрицательное, мы добавляем их в начало входного массива),

и, наконец, третий параметр — добавляемое значение.

Обратите внимание, что если вы используете для заполнения ассоциативного массива числовые ключи в качестве третьего параметра, ваши ключи будут перенумерованы.

$dwarfs = array('Doc', 'Grumpy', 'Happy', 'Sleepy', 'Dopey', 'Bashful', 'Sneezy');
$padRight = array_pad($dwarfs , 10, 'Snow White'); 
Array ( 
    [0] => Doc 
    [1] => Grumpy 
    [2] => Happy 
    [3] => Sleepy 
    [4] => Dopey 
    [5] => Bashful 
    [6] => Sneezy 
    [7] => Snow White 
    [8] => Snow White 
    [9] => Snow White 
) 
$dwarfs = array('first' => 'Doc', 'second' => 'Grumpy'); 
$padLeft = array_pad($dwarfs , -5, 'Snow White'); 
Array ( 
    [0] => Snow White 
    [1] => Snow White 
    [2] => Snow White 
    [first] => Doc 
    [second] => Grumpy 
)

Прочтите о array_pad() в официальном руководстве.

диапазон()

Другой способ автоматического создания массивов — использовать функцию array_range(), она очень проста и требует трех параметров.

Первое — это начальное значение, оно может быть целым числом или буквой,

второй параметр является конечным значением, он также может быть целым числом или буквой и позволяет остановить массив.

Вместо этого третий параметр не является обязательным и состоит из длины трех шагов, если он не введен, PHP оценивает его как целое число со значением 1 по умолчанию.

foreach (range(1, 7) as $number) { echo $number; } 


foreach (range('a', 'g') as $letter) { echo $letter; } 

массив_заполнить()

Вот еще одна функция, задачей которой является добавление значений в массив.
array_fill() работает намного проще, чем ранее встречавшиеся функции.

Он также имеет три параметра,

первый состоит из начального значения ключа и должен быть целым числом и может быть как положительным, так и отрицательным,

второй указывает общее количество элементов, которые мы хотим в массиве, он также должен быть целым числом,

наконец, у нас есть значение, которое мы хотим вставить, оно может быть смешанного типа.

$dwarfs = array_fill(17, 3, 'Doc');
Array ( 
    [17] => Doc 
    [18] => Doc 
    [19] => Doc 
) 

$dwarfs = array_fill(-2, 3, 'Doc'); 
Array ( 
    [-2] => Doc 
    [0] => Doc 
    [1] => Doc 
)

array_fill_key()

Из приведенного выше примера видно, что использование array_fill() с отрицательными значениями приводит к нежелательному результату, один из способов преодолеть это препятствие — определить ключи вручную..

Мы можем сделать это благодаря функции: array_fill_key().

Впервые опубликованный в PHP 5.2, он учитывает только два параметра: массив, содержащий используемые ключи, и второй параметр смешанного типа, состоящий из вставляемых значений.

Очевидно, как и старший брат array_fill(), он также возвращает массив.

$dwarfs = array_fill_keys(range(-2,1),'Doc');
Array ( 
    [-2] => Doc
    [-1] => Doc
    [0] => Doc
    [1] => Doc
)
 
$dwarfs = array('Doc', 'Grumpy', 'Happy', 'Sleepy', 'Dopey', 'Bashful', 'Sneezy');
$result = array_fill_keys($keys, 'Snow White');
Array ( 
    [Doc] => Snow White
    [Grumpy] => Snow White
    [Happy] => Snow White
    [Sleepy] => Snow White
    [Dopey] => Snow White
    [Bashful] => Snow White
    [Sneezy] => Snow White
)

array_combine

Одной из самых крутых функций работы с массивами среди тех, что появятся в версии PHP5, несомненно, является array_combine().

что также является частью функций «создания».

Он принимает 2 параметра типа массива и возвращает ассоциативный массив, в котором элементы первого параметра являются ключами, а элементы второго массива — значениями.

Очевидно, вы должны быть осторожны, чтобы элементы, которые будут использоваться в качестве ключей, были действительными (целые числа или строки),

Кроме того, если в ключах есть дубликаты, последний перезапишет остальные.

$keys = array('dwarfs', 'original', 'dwarfs', 'dwarfs', 'original', 'dwarfs', 'original');
$values = array('Doc', 'Mickey Mouse', 'Grumpy', 'Happy', 'Pete', 'Sleepy', 'Pluto');
array_combine($keys, $values);
Array ( 
    [dwarfs] => Doc
    [original] => Mickey Mouse
    [dwarfs] => Grumpy
    [dwarfs] => Happy
    [original] => Pete
    [dwarfs] => Sleepy
    [original] => Pluto
)

array_walk()

Обычно функции, у которых в качестве параметра есть обратные вызовы, могут показаться пугающими, а вот array_walk() — немного меньше.

Он перебирает все элементы массива и запускает для них функцию, которая их изменяет.

Он принимает 3 параметра, из которых первые два являются обязательными, исходный массив и функция обратного вызова, и третий, который может быть разных типов, который можно использовать в обратном вызове.

Если в конце цикла ошибок не было, array_walk() возвращает истинное логическое значение, иначе возвращает false.

Значение элемента можно изменить в функции обратного вызова, указав параметр значения в качестве ссылки с помощью &$value.

function setString($value,$key,$sentence)
{
    echo "$value $sentence $key";
}
$dwarfs = array(
    'first' => 'Grumpy', 
    'second' => 'Happy', 
    'third' => 'Sleepy', 
    'fourth' => 'Dopey', 
    'fifth' => 'Bashful', 
    'sixth' => 'Sneezy',
    'seventh' => 'Doc'
);
 
array_walk($dwarfs,"setString"," is the ");
/*
Grumpy is the first
Happy is the second
Sleepy is the third
Dopey is the fourth
Bashful is the fifth
Sneezy is the sixth
Doc is the seventh
*/

У array_walk() есть младший брат, который называется array_walk_recursive(),

Он появился в версии 5 PHP.

Они имеют один и тот же формат и имеют почти одинаковую функциональность, но с помощью рекурсии вы можете работать с более глубоким массивом (также называемым матрицей или массивами внутри массивов).

список()

Я немного обманываю здесь, потому что list() — это не функция массива, а реальная конструкция PHP,

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

(может быть, это было только мое впечатление, дайте мне знать в комментариях).

Однако,

как сказано в руководстве, list() назначает переменные, как если бы они были массивом,

Но что это значит?

Простыми словами,

он принимает массив в качестве параметра, разбивает все его элементы, начиная слева (справа для PHP5 и миноров) и, исходя из их положения, помещает их в переменные, которые мы определяем в этот момент, вы также можете пропустить элемент, оставив пустое место.

$disney = array('Doc', 'Grumpy', 'Mickey Mouse', 'Pete');
 
list($first, $second, $third, $fourth) = $disney;
echo "$first and $second are friends whereas $third and $fourth are enemies";
// Doc and Grumpy are friends whereas Mickey Mouse and Pete are enemies
list($first, $second,, $fourth) = $disney;
echo "$first and $second are friends whereas $fourth has no enemies";
// Doc and Grumpy are friends whereas Pete has no enemies

Вот подробно объясненный пример функции списка Себастьяна Де Дейна.

Вывод

Как я уже говорил в предыдущем эпизоде, функции работы с массивами — это огромная часть, которую нужно переварить.

Хорошая новость заключается в том, что знание их всех не обязательно.

Даже не на самых высоких уровнях.

Хотя вам важно знать, что они существуют, вы всегда можете использовать эту и другие части этого руководства в качестве справочного материала и возвращаться сюда так часто, как захотите.

Если вам понравился этот контент и следующий набор примеров функций массивов, следите за обновлениями и подпишитесь на информационный бюллетень, чтобы получать уведомления.

Если вы хотите узнать больше о функциях массивов PHP, взгляните на уже опубликованные учебные пособия, которые являются частью этой серии, нажав на ссылки ниже.


Открытый массив PHP (часть первая)
Создание массивов и управление ими


3944-517995.png

Научитесь программировать, приобретите новый навык, устройтесь на новую работу
Какой бы ни была ваша цель — Treehouse поможет вам достичь ее

В настоящее время они делают бесплатное 4-месячное предложение (стоимостью 100 долларов).

Посмотри на это!
(партнерские ссылки)


подписка-Medium.jpg

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *