Справочники, инструменты, документация

PHP: Массивы (cниппеты)

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

Создаём массив $array (каждый ключ будет равняться номеру строки в файле)

$file=file("my_file.txt");
print_r($file); 

Используем в качестве разделителя :: (два двоеточия)

$string="Вася::Петров::25::";
$array=explode("::",$string);
echo "Имя: ".$array[0].", фамилия: ".$array[1].", возраст:  ".$array[2]; 

Случайно перемешать элементы массива

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

 $items = array (1,2,3,4,5);
 shuffle ($items);
 print_r ($items);

Определяем в какой стране живёт посетитель

$host=gethostbyaddr($REMOTE_ADDR);

$countrys=array(
ru => Россия,
ua => Украина,
kz => Казахстан
);
$array=array_reverse(explode(".",$host));

if(!empty($countrys[$array[0]]))
echo "Ваша страна: ".$countrys[$array[0]];

else echo "Откуда Вы пришли - я не знаю :(";

Вставка новых элементов в массив

$names = array();
array_push($names, 'David', 'John');

Удалить элемент из массива

unset($names['David']);
// or...
unset($names[0]);

Переиндексируйте значения после удаления элемента

$names = array_values($names);

Обратить массив

$reversed = array_reverse($names);

Объедините два или более массива

$merged = array_merge($arr1, $arr2);

Вернуть только ключи массива

$keys = array_keys(array('name' => 'David', 'age' => 28));

Сортировать массив

sort($names);

Отсортируйте массив в обратном порядке, реверс

rsort($names);

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

if (in_array('David', $names)) {
    // item exists
}

Проверьте, существует ли ключ в массиве

if (array_key_exists('name', array('name' => 'David', 'age' => 28))) {
    // key exists
}

Подсчитайте количество элементов в массиве

count($names);

Преобразовать список, разделенный запятыми, в массив

$array = explode(',', 'david,john,warren,tracy');

Объединяем 3 файла в один массив, а именно в $new_array

$files=array(
"file1.txt", # первый файл
"file2.txt", # второй файл
"file3.txt" # третий файл
);

for($i=0;$i<count($files);$i++)
{
$array[]=file($files[$i]);
}

while(list(,$result)=each($array))
{
for($i=0;$i<count($result);$i++)
{
$new_array[]=$result[$i];
}
}

print_r($new_array); #выводим массив

Массив сокращённый

$streets = array("Вязов", "Дубов", "Авеню"); // отсчёт с нуля
$streets = array(12 => "Вязов", "Дубов", "Авеню"); // отсчёт с 12
$streets = array("V" => "Вязов",
     "D" => "Дубов",
     "A" => "Авеню");

$years = range(2001, 2010); // тут 10 массивов, см. ниже
$years[0] = 2001
$years[1] = 2002
...
$years[9] = 2010

Вывод элементов массивов

echo "<pre>";
var_dump($castomers);
echo "</pre>";

Красивый вывод элементов массивов

echo "<pre>";
print_r($castomers);
echo "</pre>";

Перебор элементов массива вручную

current($имя_массива) возвращает текущее значение элемента масива, не перемещая указатель
next($имя_массива) перемещает указатель вперЄд на один элемент
previous($имя_массива) перемещает указательназад на один элемент
end($имя_массива) перемещает указатель в конец массива
reset($имя_массива) перемещает указатель в начало массива

Данные из конца массива

$count_sites = end($file_list_sites);

Проход по массиву

foreach($имя_массива as $ключ => $значение) //после прохода указатель возвращается в начало
{
  набор операторов;
}

Пример прохода по массиву:

foreach($_SERVER as $key => $value) //информация о сервере
{
echo "<p>$key<br>$value</p>";
}

$serverURL = foreach($_SERVER_NAME as $key => $value);

Преобразование текстовой строки в массив

$str = "это: новый: дом";
$test = explode(":", $str);
print_r($str);
print_r($test);

Преобразование массива в текстовую строку

$str = array("красный", "синий", "зеленый");
$test = implode(";", $str);
print_r($str);
print_r($test);

Преобразование массива в переменные

$str = array("red" => "красный", "blue" => "синий");
extract($str);
echo "$red";
echo "$blue";

Преобразование переменных в массив

$color1 = "красный";
$color2 = "синий";
$a = "фиолет";
$b = "оранж";
$arrayIn = array("a", "b");
$arrayOut = compact("color1", "color2", $arrayIn);

// результат обработки
// $arrayOut[color1] = красный
// $arrayOut[color2] = синий
// $arrayOut[a] = фиолет
// $arrayOut[b] = оранж

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

$test = array("крас", "зел", "син", "роз");
$sab = array_slice($test, 1, 2); // элемент с которого начинается разбиение, 2 - количество элементов

// результат обработки
// [0] => зел
// [1] => син

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

if(!in_array($userfile[1], $files_type))
{
 $ups .= '«загружаемый формат не поддерживается<br>';
}

Объединение массивов

$big = array_merge($массив1, $массив2, ...);

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

$sum = array_sum($имя_массива);

Удаление повторяющихся элементов

$delete = array_unique($имя_массива);

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

// иммется массив
$1['r'] = red
$1['b'] = bl

// перестановка
$pere = array_flip($test);

// результат обработки
// $1['red'] = r
// $1['bl'] = b

Многомерный массив (массив массивов)

$food['vegetable']['apple'] = 1.25;

Создание многомерного массива

$food = array(
 "vegetable" => array("potato" => 1.00, "onion" => .50),
 "fruit" => array("orange" => 2.50, "apple" => 2.00),

Информация об имени текущего запущенного сценария

echo $_SERVER['PHP_SELF']; // путь до запущенного файла (без адреса сайта)

Информация о сервере

foreach($_SERVER as $key => $value) 
{
 echo "<p><b>$key</b><br>$value</p>";
}

Урл сервера (url сайта)

echo $_SERVER['SERVER_NAME'];

Адрес до страницы без урла сайта

echo $_SERVER['SCRIPT_NAME'];

Создание массива:

$someArray = [];

Самостоятельное создание ключей массива

$fruits = [5 => 'apple', 3 => 'orange', 9 => 'grape'];
var_dump($fruits);

Удалить последовательность элементов массива и заменить её другой последовательностью

array_slice($array, 1, 3, true);
// массив, от куда начать, кол-во, сохранить ключи?

Удалить элемент массива

$fruits = ['apple', 'orange', 'grape'];

$fruits[] = 'mango';

unset($fruits[2]); 
// удалить элемент массива по ключу (если задан) или индексу

var_dump($fruits);

Проверка на конец массива

!next($array);
// если нет следующего элемента то это конец массива

Получить текущий элемент массива

current($array); // получить текущий элемент массива
next($array); // перевод указателя на следующий элемент
current($array); // получить слудующий элемент массива

Получить ключ текущего элемента в массиве

key($array); // ключ текущего элемента массива
next($array); // перевод указателя на следующий элемент
key($array); // получение следующего ключа

Узнать есть ли в массиве ключ

array_key_exists(mixed($key), $array);// отдаст TRUE или FALSE в зависимости от того есть ли такой КЛЮЧ в массиве

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

in_array(mixed($value), $array); // отдаст TRUE или FALSE в зависимости от того есть ли такое ЗНАЧЕНИЕ в массиве

Удалить элемент массива

unset($var['Example']);
array_search(mixed($value), $array); // отдаст КЛЮЧ если такое ЗНАЧЕНИЕ есть в массиве

Вывод массива в строку через разделитель

implode(', ', $array);

Сортировка значений массива

sort($array); // сортирует значения элементов по алфавиту и возрастанию чисел, при этом сбрасывает ключи на индексы если это ассоциативный массив
rsort($array); // реверсивная сортировка

Сортировка значений ассоциативного массива

asort($assoc_array); // сортирует значения массива по алфавиту и возрастанию цифр, при этом НЕ СБРАСЫВАЕТ ключи ассоциативного массива
arsort($assoc_array); // реверсивная сортировка

Сортировка по ключам массива

ksort($assoc_array); // сортирует ключи массива по алфавиту и возрастанию цифр
krsort($assoc_array); // реверсивная сортировка

Объединение массивов array_merge();

$array1 = [
  'login' => 'admin',
  'password' => '123'
];
$array2 = [
  'password' => '321'
];
var_dump(array_merge($array1, $array2));
// 'login' => string 'admin' (length=5)
// 'password' => string '321' (length=3)
// Это может быть удобно, когда нам необходимо обновить часть каких-то данных в массиве.
// Как в примере выше – мы обновили пароль, оставив логин прежним.
На этой странице