Определение массива с ненулевым начальным индексом

Задача
Необходимо присвоить множество значений элементам массива за один раз, но при этом первый индекс не должен быть равен 0.

Решение
Прикажите функции array() использовать другой индекс, применив синтаксис =>:
$presidents = array(1 => 'Washington', 'Adams', 'Jefferson', 'Madison');

Обсуждение
Массивы в PHP, как и в большинстве, но не во всех, компьютерных языков, начинают отсчет первого элемента с индекса 0. Однако иногда хранимые данные имеют больше смысла, если список начинается с 1. (Здесь мы, конечно, не разговариваем с выздоравливающими програм мистами на Паскале.) В приведенном ниже решении Джордж Вашингтон является первым президентом, а не нулевым, поэтому если необходимо напечатать список президентов, то проще всего сделать это следующим образом:

foreach ($presidents as $number => $president) {
print "$number: $president\n";
}

а не так:
foreach ($presidents as $number => $president) {
$number++;
print "$number: $president\n";
}

Эта функциональность не ограничивается числом 1; годится любое целое:

$reconstruction_presidents = array(16 => 'Lincoln', 'Johnson', 'Grant');

Кроме того, можно использовать символ => много раз в одном вызове:1

$whig_presidents = array(9 => 'Harrison', 'Tyler',
12 => 'Taylor', 'Fillmore');

PHP даже разрешает при вызове функции array() использовать отрицательные числа.


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

$us_leaders = array(-1 => 'George II', 'George III', 'Washington');

Если Вашингтон – это первый президент США, то Джордж III является нулевым, а его дедушка Джордж II – минус первым президентом. Конечно, можно смешивать и ставить в соответствие числовые и строковые ключи в определении одного массива с помощью функции array(), но это сбивает с толку и используется крайне редко:

$presidents = array(1 => 'Washington', 'Adams', 'Honest' =>
'Lincoln', 'Jefferson');

Это эквивалентно следующему:
$presidents[1] = 'Washington'; // Key is 1
$presidents[] = 'Adams'; // Key is 1 + 1 => 2
$presidents['Honest'] = 'Lincoln'; // Key is 'Honest'
$presidents[] = 'Jefferson'; // Key is 2 + 1 => 3

Оцените статью: (0 голосов)
0 5 0

Статьи из раздела PHP на эту тему:
Добавление одного массива к другому
Изменение длины массива
Инициализация массива диапазоном
Инициализация массива диапазоном целых чисел
Нахождение всех перестановок массива

Вернуться в раздел: PHP / 4. Массивы