Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
[0=>'z_val',1=>'f_val',2=>'s_val']
, а не ['z_val','f_val','s_val']
На самом деле массив в PHP — это упорядоченное отображение, которое устанавливает соответствие между значением и ключом. Этот тип оптимизирован в нескольких направлениях, поэтому вы можете использовать его как собственно массив, список (вектор), хэш-таблицу (являющуюся реализацией карты), словарь, коллекцию, стэк, очередь и, возможно, что-то еще. Так как значением массива может быть другой массив PHP, можно также создавать деревья и многомерные массивы.
Проблема здесь в том, что обыкновенных массивов в PHP нет как понятия.
<?php
// Initialize the array with a fixed length
$array = new SplFixedArray(5);
$array[1] = 2;
$array[4] = "foo";
var_dump($array[0]); // NULL
var_dump($array[1]); // int(2)
var_dump($array["4"]); // string(3) "foo"
нельзя было бы сделать. Ну и речь шла о базовых массивах, а не о надстройках :)За исключением строгой типизации
$array=[];
будет, если совсем упростить, в виде:struct KeyValue{
void* key;
void* value;
KeyValue* prev;
KeyValue* next;
}
struct KeyValue* array;
array_splice($array, $position, 0, array($value));array_splice($array, $position, 0, array($value));
insertBruteForce: 0.0020
insertBinary: 0.0028
insertInterpolation: 0.0027
insertDown: 0.0015
insertBruteForce: 0.0260
insertBinary: 0.0412
insertInterpolation: 0.0413
insertDown: 0.0218
insertBruteForce: 0.0369
insertBinary: 0.0427
insertInterpolation: 0.0423
insertDown: 0.0228
foreach($array as $position => $test) {
if ($test >= $value) {
for($i=0;$i<count($array);$i++) {
if ($test >= $array[$i]) {
if($array[$i] >=$value)
$array->insert($value)
а скорость даже не получается замерить.
Оптимизация для начинающих, или о пользе профилирования