Массивы в 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

php sort array int string key

просмотров: 1018