Хеш массивы, или просто — массивы, известны во многих языках. Обычно массив это список, где у каждого элемента есть индекс. Простые массивы в качестве индексов могут иметь только число и часто индексы начинаются с 0. В Orion и php массивы в качестве индексов могут иметь строковое значение, поэтому они и становятся хеш-массивами.
Общий синтаксис
Объявление массива происходит через функцию Array, как в классическом php.
$var = array(); // пустой массив $var = array(1,2,3,4,5); // массив чисел
Когда мы объявляем массив не задавая ключей (т.е. индексов), они определяются автоматически, начиная обычно с 0. Если вы хотите объявить массив с ключами, то необходимо это сделать так:
$var = array('key1'=>1,'key2'=>2,'key3'=>3); $var = array(0=>1,1=>2,2=>3,3=>4,4=>5);
Рассмотрим сложный вариант, допустим вы хотите чтобы массив автоматически начинал индексироваться не с 0, а с 10 например. Такое тоже можно организовать:
$var = array(10=>1,2,3,4,5); // этот массив эквивалентен следующему $var = array(10=>1,11=>2,12=>3 ..
Ключами массива могут быть числа, строки, логические переменные или даже пустая строка. Null для ключа массива будет все равно что пустая строка.
Добавление элементов
В Орионе есть такая же возможность добавления элементов в массив как и в PHP:
$var[] = 1; $var[] = 2; $var[] = 3; $var[] = 4;
Когда вы пишите [] обращение к массиву без ключа, то происходит добавление нового Null элемента в массив, все ключи тоже обычно начинаются с нуля. Если вы хотите чтобы добавление начиналось не с нуля, то можно сделать так:
$var[10] = 1; $var[] = 2; $var[] = 3; ...
Массивы как множества
Отличительной особенностью Ориона являются псевдо-множества, которые ничем не отличаются от массивов. Это просто короткая запись объявления массивов, которая отсутствует в PHP.
Рассмотрим пример, чтобы стало понятно:
$var = [1,2,3,4,5]; // эта запись эквивалентна $var = array(1,2,3,4,5);
Как мы видим, такое объявление короче и часто удобней. Для компилятора эта одна и та же конструкция. Также давайте посмотрим другие примеры:
$var = ['key1'=>1,'key2'=>2,3]; // это массив будет следующим // array('key1'=>1,'key2'=>2,0=>3)
Многомерные массивы
Орион поддерживает многомерные массивы как и PHP. Многомерный массив — это массивы, некоторые элементы которого, могут быть тоже массивами как одномерными, так и многомерными.
Объявлять многомерные массивы также просто как и одномерные:
$var = array(1=>array(20,30),2=>array(40,50)); // обращаться можно так: echo $var[2][0]; // выдаст 40
Рассмотрим эту же запись в виде множества:
$var = [1=>[20,30],2=>[40,50]]; // вы видите, что эта запись короче и удобней // но если вы хотите совместимости с оригинальным ПХП стоит отказаться от такой записи
Множества как мульти-результат функций
Известно, что в некоторых языках функция может возвращать несколько результатов одновременно. В Орионе это тоже возможно элегантно и красиво, благодаря записи массивов как множеств:
function myFunc(){ return [20,30]; } list($x,$y) = myFunc(); echo $x; // выведет 20 echo $y; // выведет 30
Функция list превращает массив в переменные.
Строки как массивы
Строки на самом деле ведут себя немного также как и массивы. К каждому символу строки можно обратится по его индексу прямо как в массиве, так можно изменять и получать определенные символы строки:
$str = 'My String'; echo $str[3]; // выведет S $str[0] = 'm'; echo $str; // выведет 'my String';