Reg.ru: домены и хостинг

Крупнейший регистратор и хостинг-провайдер в России.

Более 2 миллионов доменных имен на обслуживании.

Продвижение, почта для домена, решения для бизнеса.

Более 700 тыс. клиентов по всему миру уже сделали свой выбор.

Перейти на сайт->

Бесплатный Курс "Практика HTML5 и CSS3"

Освойте бесплатно пошаговый видеокурс

по основам адаптивной верстки

на HTML5 и CSS3 с полного нуля.

Начать->

Фреймворк Bootstrap: быстрая адаптивная вёрстка

Пошаговый видеокурс по основам адаптивной верстки в фреймворке Bootstrap.

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

Верстайте на заказ и получайте деньги.

Получить в подарок->

Бесплатный курс "Сайт на WordPress"

Хотите освоить CMS WordPress?

Получите уроки по дизайну и верстке сайта на WordPress.

Научитесь работать с темами и нарезать макет.

Бесплатный видеокурс по рисованию дизайна сайта, его верстке и установке на CMS WordPress!

Получить в подарок->

*Наведите курсор мыши для приостановки прокрутки.


Массивы в PHP: начальный индекс, отличный от нуля и хранение нескольких элементов для одного ключа массива

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

Решение очень простое, главное - просто знать о его существовании. Мы говорим фукции array(), что ей нужно использовать другой начальный индекс при помощи синтаксиса "=>":


$days = array(1 => 'Понедельник', 'Вторник', 'Среда', 'Четверг', 'Пятница');

Первый индекс со значением "0" далеко не всегда удобен. Скажем, мы хотим, чтобы среди дней недели понедельник имел индекс 1, а не 0.

Теперь для вывода дней недели и их порядковых номеров можно воспользоваться конструкцией:


foreach ($days as $number => $day)
{
    echo "$number: $day<br>";
}

а не так:


foreach ($days as $number => $day)
{
	$number++;
    echo "$number: $day<br>";
}

Само собой, можно "стартовать" не только с 1, но и с любого другого числа:


$days = array(4 => 'Четверг', 'Пятница', 'Суббота');

Альтернативный вариант:


$days = [4 => 'Четверг', 'Пятница', 'Суббота'];

Более того, можно использовать конструкцию "=>" несколько раз в одном вызове:


$days = array(2 => 'Вторник', 'Среда', 6 => 'Суббота', 'Воскресенье');

Альтернативный вариант:


$days = [2 => 'Вторник', 'Среда', 6 => 'Суббота', 'Воскресенье'];

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

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


$tsars = array(-2 => 'Иван Калита', 'Василий 3', 'Иван 4');

Альтернативный вариант:


$tsars = [-2 => 'Иван Калита', 'Василий 3', 'Иван 4'];

Можно также в одном определении array() смешивать числовые и строковые ключи, однако такой подход неудобен для восприятия и редко когда бывает необходим:


$tsars = array(1 => 'Иван 1', 'Иван 2', 'Великий' => 'Иван 3', 'Иван 4')

Альтернативный вариант:


$tsars = [1 => 'Иван 1', 'Иван 2', 'Великий' => 'Иван 3', 'Иван 4']

Если добавлять эти записи в массив поочередно, то получится следующее:


$tsars[1]          = 'Иван 1';   // Ключ 1
$tsars[]           = 'Иван 2';   // Ключ 1 + 1 => 2
$tsars['Великий']  = 'Иван 3';   // Ключ 'Великий'
$tsars[]           = 'Иван 4';   // Ключ 2 + 1 => 3


Хранение нескольких элементов для каждого ключа

Периодически у нас может возникнуть необходимость связать с одним ключом массива несколько элементов. Сделать это можно, задав массив такого вида:


$fruits = array ('красный' => array ('гранат', 'клубника'),
				 'желтый' => array ('банан'));

Либо можно использовать объект:


while ($obj  = mysqli_fetch_assoc($r))
{
	$fruits[] = $obj;
}

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

Для того, чтобы реализовать эту задачу, нужно сохранить необходимые значения в так называемом анонимном массиве:


$fruits = array();

$fruits['красный'][] = 'гранат';
$fruits['красный'][] = 'клубника';
$fruits['желтый'][] = 'банан';

print_r($fruits);

На выходе получим следующую распечатку:


Array
(
	[красный] => Array
			(
				[0] => гранат
				[1] => клубника
			)
	[желтый] => Array
			(
				[0] => банан
			)
)

Либо, если элементы обрабатываются в цикле:


while (list($color,$fruit) = mysqli_fetch_assoc($r))
{
	$fruits[$color][] = $fruit;
}

Чтобы вывести значения элементов нам нужно перебрать в цикле содержимое массива:


foreach ($fruits as $color => $color_fruit) // $color_fruit - массив
{
	foreach ($color_fruit as $fruit)
	{
		echo "$fruit имеет $color цвет.<br>";
	}
}

На этом пока всё, закругляемся.

Понравился материал и хотите отблагодарить?
Просто поделитесь с друзьями и коллегами!


Смотрите также:

PHP: Получение информации об объекте или классе, методах, свойствах и наследовании

PHP: Получение информации об объекте или классе, методах, свойствах и наследовании

CodeIgniter: жив или мертв?

CodeIgniter: жив или мертв?

Функции обратного вызова, анонимные функции и механизм замыканий

Функции обратного вызова, анонимные функции и механизм замыканий

Применение функции к каждому элементу массива

Применение функции к каждому элементу массива

Слияние массивов. Преобразование массива в строку

Слияние массивов. Преобразование массива в строку

Деструктор и копирование объектов с помощью метода __clone()

Деструктор и копирование объектов с помощью метода __clone()

Эволюция веб-разработчика или Почему фреймворк - это хорошо?

Эволюция веб-разработчика или Почему фреймворк - это хорошо?

Магические методы в PHP или методы-перехватчики (сеттеры, геттеры и др.)

Магические методы в PHP или методы-перехватчики (сеттеры, геттеры и др.)

PHP: Удаление элементов массива

PHP: Удаление элементов массива

Ключевое слово final (завершенные классы и методы в PHP)

Ключевое слово final (завершенные классы и методы в PHP)

50 классных сервисов, программ и сайтов для веб-разработчиков

50 классных сервисов, программ и сайтов для веб-разработчиков

Наверх