КОнтакты, предложения, отзывы

.rar или .zip
Вложение
Онлайн-чат
На этом сайте, вы найдёте полезную информацию, практические советы в области веб-программирования, веб-дизайна и веб-разработок в целом. Мы с удовольствием поделимся с вами реальными примерами и решениями задач, связанных с jQuery , JavaScript , PHP и MySQL , версткой сайтов , поможем разобраться новичкам с современными технологиями, такими как Ajax , HTML5 , CSS3 и многими другими.

Функции для работы с массивами

count

Подсчитывает количество элементов массива или что-то в объекте.
count ( mixed $array_or_countable [, int $mode = COUNT_NORMAL ] )
Если необязательный параметр mode установлен в COUNT_RECURSIVE (или 1), count() будет рекурсивно подсчитывать количество элементов массива. Это особенно полезно для подсчёта всех элементов многомерных массивов.

Цикл foreach

Для вывода всех элементов массива оператор for не подходит. Специ­ ально для перебора ассоциативных массивов используется оператор цикла foreach. Синтаксис его таков:
foreach ($массив as $ключ [=> $значение]) { тело; }
Например:
foreach ($DB as $key => $value)
echo "$key => $value <br>";

Fункция list ():

list($osO, $osl, $os2, $os3, $os4) = $os;
Переменным $os0-$os5 будут присвоены значения элементов массива $os[0]-$os[5] соответственно.
Функция array() используется для создания массивов, как списков, так и ассоциативных:

Удаление массива

Удалить массив можно так же, как и обычную переменную, — с помощью функции unset():
unset($DB);

Перемещение по массиву

Функция reset() - устанавливает внутренний указатель массива на первый элемент массива
end() — на последний.
Функция next() устанавливает указатель на следующий элемент массива, a prev() — на предыдущий.
Функция key () получает текущий ключ массива, а функция current() возвращает текущий элемент массива, т. е. значение текущего элемента. Вместо функции current() можно использовать функцию pos() , которая является псевдонимом current().

Слияние массивов

Слияние (объединение) массивов подразумевает создание одного массива, состоящего из элементов объединяемых массивов. Слияние осуществляется с помощью оператора +. Если при слиянии массивов будут найдены элементы с одинаковыми индексами, то оператор + возьмет их из первого массива.
Если для ассоциативных массивов с успехом можно использовать оператор +, то для слияния списков удобно использовать array_merge():
$АЗ = array_merge($А1, $А2);
Для слияния многомерных массивов используется функция array_merge_recursive ():

Разбиение массивов

array array_chunk ( array $array , int $size [, bool $preserve_keys = false ] )
Разбивает массив на несколько массивов размером в size элементов. Последний массив из полученных может содержать меньшее количество значений, чем указано в size.

Функция print_r()

Иногда нужно вывести массив в отладочных целях — просто чтобы посмотреть его элементы. В этом случае некогда возиться с foreach() и echo, намного проще вызвать функцию print_r():
$DB = array (
  "О" => array( "host" => "localhost", "user" => "root",
    "password" => "", "db_name" => "test"
  ),
  "1" => array( "host" => "server.ru", "user" => "root",
    "password" =>  "db_name" => "test"
  )
);
print_r($DB);

Функции сортировки массивов

Функция sort() — сортировка списка

Функция sort() используется для сортировки обычных массивов, т. е. списков. rsort() выполняет сортировку в обратном порядке. Прототип этой функции выглядит так:
sort (&$array, [sort_flags]);
□ Функция назначает новые ключи для элементов массива, поэтому ее нельзя использовать для сортировки ассоциативных массивов, иначе вы рискуете потерять данные.
□ Функция выполняет сортировку по возрастанию (или в алфавитном порядке,если элементы массива — строки)
Флаги:
• SORT_REGULAR — обычное сравнение элементов без изменения их типов;
• SORT_NUMERIC — сравнивать элементы как числа;
• SORT_STRING — сравнивать элементы как строки;
• SORT_LOCALE_STRING — сравнивать элементы как строки,
 учитывая текущую  "локаль" (языковые параметры системы).

Функция asort() — сортировка массива по значениям

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

Функция ksort() — сортировка по ключам

krsort() выполняет сортировку по ключам в обратном порядке.

Функции array_reverse() и shuffle()

Функция array_reverse() возвращает массив с элементами в обратном порядке. Функция shuffle() перемешивает элементы массива в произвольном порядке. Каким будет вывод shuffle(), сказать сложно — в этом и прелесть случайной сортировки. Однако помните, что данная функция полностью изменяет массив, поэтому ее нужно использовать только для списков.

Функция array_rand()

array_rand(массив, количество элеметов) — Выбирает одно или несколько случайных значений из массива. Если второй параметр не задан или равен 1, array_rand() возвращает ключ для случайного элемента. В других случаях, возвращается массив ключей случайных элементов.
$input = array("Neo", "Morpheus", "Trinity", "Cypher", "Tank");
$rand_keys = array_rand($input, 2);
echo $input[$rand_keys[0]] . "\n";
echo $input[$rand_keys[1]] . "\n";

Особые операции над массивами

Добавление и удаление элементов массива

Добавить элемент в конец массива можно с помощью оператора []:
$array[] = 'Den';
Кроме оператора [] можно использовать функцию array_push():
array_push ($array, var1, var2, ...);
Для удаления последнего элемента массива используется функция аггау_pор().
$element = array_pop($array);
Переменная $eiement будет содержать этот элемент.
Чтобы добавить элементы в начало списка, нужно использовать функцию array_unshift():
array_unshift ($array, var1, var2, ...);
Удалить первый элемент массива можно с помощью функции array_shift().

Упаковка переменных в массив и их извлечение

Предположим, что у нас есть три следующих переменных:
$host = "localhost";
$user = "root";
$password = "secret";
Упакуем их в массив $ db с помощью функции compact(), нужно передать имена переменных, а не их значения:
$DB = compact("host", "user", "password");
Функция compact () создаст следующий массив:
Array
(
[host] => localhost
[user] => root
[password] => secret
)
Для распаковки ключей массива в переменные используется функция extract ():
int extract ( array var_array [, int extract_type [, string prefix]] );
Например:
extract($DB);
При распаковке массива будут созданы переменные с именами, соответствующими названиям ключей массива, т. е. $host, $user и $password. Значения этих переменных будут такими же, как у соответствующих им ключей массива.
Все вроде просто, если не принимать во внимание один факт. Что делать, если переменные $host, $user и $password уже существуют?
Поведение функции регулируется вторым параметром:
□  EXTR_OVERWRITE — если распаковываемая переменная уже существует,
 она будет перезаписана;
□  EXTR_SKIP — если переменная с таким именем существует,
 будет сохранено ее прежнее значение;
□  EXTR_PREFIX_SAME — если переменная существует, к ее имени будет 
добавлен префикс, заданный третьим параметром функции  extract  ();
□  EXTR_PREFIX_ALL - префикс, заданный третьим параметром, будет
 добавлен ко всем извлекаемым переменным.

Получение части массива

Функция array_siice() возвращает часть массива array длиной length начиная c индекса offset:
array array_slice ( array array, int offset [, int length [, bool reserve_keys]] );
Если параметр length не задан, то возвращаются все элементы массива начиная С offset: Вы можете задать отрицательное смещение (offset) — отсчет будет начинаться с конца массива, а не с начала.

Функции автоматического заполнения массива

Функция range() позволяет создать массив, состоящий из диапазона чисел от $iow до $high, шаг ряда чисел задается необязательным третьим параметром, который по умолчанию равен 1:
array range ( mixed $low , mixed $high [, number $step = 1 ] );
Функция array_fill() позволяет произвести заливку массива указанным количеством значений:
array array_fill ( int $start_index , int $num , mixed $value );
Первый параметр — это начальный индекс массива, второй параметр — количество значений, третий параметр — само значение. Заполним массив $а (начиная с индекса 0) значениями 5, всего 10 значений:
$a = array_fill(0, 10, 5);
Функция array_fill_keys() заполняет не только значениями, но и ключами. Ей нужно передать два параметра: массив с ключами, элементам которых будет присвоено значение — второй параметр функции:
array array_fill_keys ( array $keys , mixed $value );

Получение части массива

Функция array_slice() возвращает часть массива array длиной length начиная c индекса offset:
array array_slice ( array $array, int offset [, int length [, bool:reserve_keys]] );
Нели параметр length не задан, то возвращаются все элементы массива начиная С offset. Вы можете задать отрицательное смещение (offset) — отсчет будет начинаться с конца массива, а не с начала.

Сравнение массивов

Функция array_diff() сравнивает несколько массивов:
array array_diff ( array $arrayl , array $array2 [, array $ . . . ] );
Результат работы функции — разница между массивами. Рассмотрим небольшой пример:
$al = array("а" => "green", "red", "blue", "red");
$a2 = array("b" => "green", "yellow", "red");
$diff = array_diff($al, $a2);
print_r($diff);
Функция array_diff() возвращает массив, состоящий из значений массива, заданного первым параметром, которые отсутствуют в любом другом массиве, перечисленном в последующих аргументах. Функция array_diff() не учитывает ключи (индексы), поэтому ее целесообразно использовать для сравнения списков и обычных, не ассоциативных массивов. В частности, результат предыдущего сравнения будет такой:
Array
(
[1] => blue
)
Для сравнения ассоциативных массивов нужно использовать следующую функцию:
array array_diff_assoc ( array $arrayl , array $array2 [, array $... ] );
Функция array_diff_assoc() производит дополнительную проверку ключей.
Для сравнения ТОЛЬКО ключей массивов используется функция array_diff_key():
array array_diff_key ( array arrayl, array array2 [, array ...] );
Функция возвращает массив, содержащий все значения из массива, указанного в первом параметре, имеющие ключи, отсутствующие в последующих параметрах.

Полезные операции над массивом

Вычисление суммы и произведения всех элементов массива

Функция array_sum() возвращает сумму всех элементов массива. Понятно, что все элементы массива должны быть числами. Для вычисления произведения всех элементов массива используется функция array_product ().

Проверка существования элемента в массиве

Функция in_array() возвращает true, если элемент присутствует в массиве.
Функция in_array() производит поиск по Значениям, а функция array_key_exists() производит поиск по ключам, что позволяет проверить существование элемента с указанным ключом:
$а = array('паше' => 'denis', 'password' => '123');
if(array_key_exists('name', $a)){
  echo "Элемент 'name' существует в массиве";
}

Получение случайного элемента из массива

Функция array_rand() получает случайный элемент из массива $input:
mixed array_rand ( array $input [, int $num_req = 1 ] );
Второй параметр задает количество случайных элементов. Функция array_rand() возвращает ключ случайного элемента. Если вы указали $num_req больше 0, то будет возвращено несколько ключей. При попытке указать больше ключей, чем есть вообще элементов в массиве, вы получите ошибку уровня E_WARNING. Небольшой пример:
// генерируем массив
$а = range(0,100);
// получаем два случайных элемента
$rkeys = array_rand($а, 2);
// выводим эти элементы
echo $input[$rkeys[0]] . "<br>";
echo $input[$rkeys[1]] . "<br>";

Удаление дубликатов из массива

Функция array_unique() удаляет повторяющиеся элементы из массива:
array array_unique(array $array [, int $sort_flags = SORT_STRING ]);
Функция не обращает внимание на ключи массива и не изменяет переданный ей массив, а работает с его копией:
$а = array(1, 2, 3, 3, 2, 1);
$unique_a = array_unique($а);
В массиве $unique_a будут значения 1, 2, 3, как несложно было догадаться.

Получение значений и ключей массива

Функция array_vaiues() возвращает все значения массива. Данную функцию удобно использовать для преобразования ассоциативного массива в обычный список. Рассмотрим пример:
$array = array("паше" => "guest", "password" => "empty");
print_r(array_values($array));
Результат будет следующим:
Array
(
[0] => guest
[1] => empty
)

Как видите, все ключи ассоциативного массива были удалены, вместо них значениям массива были присвоены числовые индексы.
Кроме функции array_vaiues() есть похожая функция — array_keys() . Как вы уже догадались, эта функция возвращает все ключи массива в виде списка. Вот результат ее работы:
Array
(
[0] => name
[1] => password
)

Замена местами значений и ключей

Функция array_flip() позволяет поменять местами значения и ключи.

Подсчет значений в массиве

Функция array_count_vaiues() позволяет подсчитать количество повторов значений в массиве:

Замена в массиве

Функция array_replace() заменяет значения элементов первого массива значениями из последующих массивов с такими же ключами:
$а = array("audi", "bmw", "mercedes");
$r = array(0 => "zaz");
$a = array_replace($a, $r);
print_r($a);
При вызове функции array_replace() в массиве $а был найден только один элемент с ключом 0. Его значение было заменено значением единственного элемента массива $г:
Array
(
[0] => zaz
[1] => bmw
[2] => mercedes
)

Поиск в массиве

Функция array_search() производит поиск указанного значения в массиве и в случае успеха возвращает его индекс (ключ):
mixed array_search ( mixed $needle , array $haystack [, bool $strict ] );
Если указанное значение не найдено, функция возвращает false. Учитывая, что булево значение false соответствует небулевому значению 0, результат работы функции лучше анализировать оператором ===. Пример использования функции:
$a = array ("audi", "bmw", "mercedes") ;
$search_result = array_search("zaz", $a);
if($search_result === false)
  echo "Запрашиваемый элемент в массиве не найден";
else echo "Ключ запрашиваемого элемента: $search_result";

Прогулка по массиву

array_map — Применяет callback-функцию ко всем элементам указанных массивов.
array array_map ( callable $callback , array $array1 [, array $... ] );
Функция array_map() возвращает массив, содержащий элементы array1 после их обработки callback-функцией. Количество параметров, передаваемых callback-функции, должно совпадать с количеством массивов, переданным функции array_map().
Интересным эффектом при использовании этой функции является создание массива массивов, что может быть достигнуто путем использования значения NULL в качестве имени callback-функции:
$a = array(1, 2, 3, 4, 5);
$b = array("one", "two", "three", "four", "five");
$c = array("uno", "dos", "tres", "cuatro", "cinco");

$d = array_map(null, $a, $b, $c);
print_r($d);
array_walk() — Применяет заданную пользователем функцию к каждому элементу массива
bool array_walk ( array &$array , callable $callback [, mixed $userdata = NULL ] )
Применяет пользовательскую функцию callback к каждому элементу массива array.
array_walk() не подвержена влиянию внутреннего указателя массива array. array_walk() обойдёт все элементы массива независимо от позиции указателя.
Для 'прогулки' по многомерному массиву используется рекурсивная версия функции array_waik():
bool array_walk_recursive ( array &$array , callable $callback [, mixed $userdata = NULL ] );
Если указан необязательный параметр userdata, то он будет передан третьим параметром функции callback.
2015.05.27 127

Разговор двух программистов: - Что пишешь? - Сейчас запустим - узнаем!
Войдите или Зарегистрируйтесь чтобы оставить комментарий

Комментарии


    Яндекс.Метрика Яндекс.Метрика