Массивы в PHP (создание и сортировка)
$arr = [1 => '1', // значение массива с ключом 1 в данный момент устанавливаем 1
6 / 3 => '6/3', // ключ станет значением вычисления 6/3=2, значение строка
1 / 3 => '1/3', // ключ массива не может быть float, преобразуется в int (дробное преобразуется в целое обрезая дробную часть)
3 / 2 => '3/2', // 3/2=1.5 float в int =1, но ключ 1 у нас уже есть и по этому замещается новым значением
-1 => '-1', // ключ массива может быть целым числом или строкой
3 => 3, // ключ как и значение это число
"4" => 'three', // ключ число, значение строка
"-6" => '-6', // ключ число, значение строка
"+7" => '+7', // ключ строка, значение строка (в ключе число с символом "+" будет строкой)
"" => 'No', // ключ "", значение строка
null => NULL // ключ ""==null, по этому замещаем значение по ключу ""
];
var_dump($arr);
array(8) {
[1]=>
string(3) "3/2"
[2]=>
string(3) "6/3"
[0]=>
string(3) "1/3"
[-1]=>
string(2) "-1"
[3]=>
int(3)
[4]=>
string(5) "three"
[-6]=>
string(2) "-6"
["+7"]=>
string(2) "+7"
[""]=>
NULL
}
добавим в массив запись с неуказанным ключом
$arr[] = '+'; // ключ автоматически присваивается (следующее свободное положительное целое число)
var_dump($arr);
...
[""]=>
NULL
[5]=>
string(1) "+"
}
если ключ указан строкой но явно попадает под критерии int, то преобразуется в число (исключение символ "+" перед числом)
$text = (string)"-11";
$arr[$text] = $text;
var_dump($arr);
...
[-11]=>
string(3) "-11"
}
если указать дробное число явно указанное как строка, по ключ будет строкой
$text = (string)"-11.11";
$arr[$text] = $text;
var_dump($arr);
...
["-11.11"]=>
string(6) "-11.11"
}
к значению массива можно обращаться по ключу $arr[4] (возможно использование как [] так и {} скобок)
var_dump(($arr[4]===$arr{4})); //bool(true)
$arr = []; // создаем пустой массив
$key = 2; // первый ключ массива
$val = 4; // значение первой записи массива
while (count($arr) <= 4) {
// пока размер массива меньше или равен 4, выполняем:
$arr[$key] = (string)($val-- . ' {key=' . $key . '}'); // добавляем элемент массива
$key = $key + 2;
} // получаем массив с четными ключами от 2 до 8 и значениями от 4 до 0 с указанием ключа соответственно
var_dump($arr);
array(5) {
[2]=>
string(9) "4 {key=2}"
[4]=>
string(9) "3 {key=4}"
[6]=>
string(9) "2 {key=6}"
[8]=>
string(9) "1 {key=8}"
[10]=>
string(10) "0 {key=10}"
}
print_r(array_values($arr)); // переиндексация массива - создание нового массива с числовыми индексами, теперь ключи от 0 до 4-х
[0] => 4 {key=2}
[1] => 3 {key=4}
[2] => 2 {key=6}
[3] => 1 {key=8}
[4] => 0 {key=10}
var_dump(count(array_diff($arr,array_values($arr)))); // сравним два массива по содержанию но с разными ключами, они не имеют расхождений! - int(0)
var_dump(count(array_diff_assoc($arr,array_values($arr)))); // а теперь сравним с учетом ключей, у нас 5-ть разных значений - int(5)
asort($arr); // сортировка массива по значению с сохранением ключей
print_r($arr);
[10] => 0 {key=10}
[8] => 1 {key=8}
[6] => 2 {key=6}
[4] => 3 {key=4}
[2] => 4 {key=2}
arsort($arr); // сортировка массива по значению в обратном порядке с сохранением ключей
print_r($arr);
[2] => 4 {key=2}
[4] => 3 {key=4}
[6] => 2 {key=6}
[8] => 1 {key=8}
[10] => 0 {key=10}
ksort($arr); // сортировка массива по ключам с сохранением ключей
print_r($arr);
[2] => 4 {key=2}
[4] => 3 {key=4}
[6] => 2 {key=6}
[8] => 1 {key=8}
[10] => 0 {key=10}
krsort($arr); // сортировка массива по ключам в обратном порядке с сохранением ключей
print_r($arr);
[10] => 0 {key=10}
[8] => 1 {key=8}
[6] => 2 {key=6}
[4] => 3 {key=4}
[2] => 4 {key=2}
sort($arr); // сортировка массива по значениям с обновлением ключей
print_r($arr);
[0] => 0 {key=10}
[1] => 1 {key=8}
[2] => 2 {key=6}
[3] => 3 {key=4}
[4] => 4 {key=2}
все возможные функции сортировки массивов в php на php.net array.sorting
полный перечень стандартных функций для работы с массивами php.net manual ref.array
просмотров: 1018