Не уверен, что тебе сказать. Запуск этого скрипта
<?php
$arr = array(
false => 1
, true => 2
, null => 3
, 'test' => 4
// , '' => 5
);
print_r( $arr );
foreach ( $arr as $key => $value )
{
var_dump( $key );
}
unset( $arr[''] );
print_r( $arr );
Я получаю следующий вывод
Array
(
[0] => 1
[1] => 2
[] => 3
[test] => 4
)
int(0)
int(1)
string(0) ""
string(4) "test"
Array
(
[0] => 1
[1] => 2
[test] => 4
)
Посмотрите, как ключ массива "null" был преобразован в тип пустой строки?
Вы уверены, что не работаете с копией массива? Если вы сделали этот вызов функции unset () внутри функции, возможно, вы это сделали.
Это было проверено на PHP 5.2.0