Одно интересное отличие, которое я обнаружил, это использование json_encode
.
json_encode(array(0=>0,1=>1,2=>2));
> [0,1,2]
json_encode(array(0=>0,2=>2));
> {"0":0,"2":2}
В качестве отдельного примера это имеет смысл, но более удивительно, когда он сочетается, скажем, с array_filter
.
$f = function($x) { return $x != 1; };
json_encode(array_filter(array(0,1,2), $f));
> {"0":0,"2":2}
Мы начали с числового массива, отфильтровали некоторые элементы, но полученный json является ассоциативным массивом!
Обратите внимание, что мы можем получить желаемый JSON, используя array_values
.
json_encode(array_values(array_filter(array(0,1,2),$f)));
> [0,2]