Как Вы удаляете значение, которое имеет пустой ключ от ассоциативного массива в PHP?

Я чувствую себя довольно глупо, отвечая на это сам так быстро, когда люди начали смотреть на это для меня ... Но я потратил на это часы в прошлом и ожидал потратить на это больше часов, но в этот раз мне повезло! [110 ]

Второй «дубликат» добавляется подключением под названием «iThemes» (это сервис, который позволяет центральному администратору нескольких WordPress сайтов). Я свяжусь с ними.

13
задан Thomas Owens 28 October 2008 в 14:30
поделиться

6 ответов

Попробовать unset($array[null]);

Если это не работает, распечатайте массив через var_export или var_dump вместо print_r, так как это позволяет Вам видеть тип ключа. Использовать var_export видеть данные в синтаксисе PHP.

var_export($array);

Обратите внимание, что var_export не работает с рекурсивными структурами.

24
ответ дан 1 December 2019 в 20:44
поделиться

Попытайтесь использовать var_dump вместо print_r. Это может дать Вам лучшее представление о том, каков точно ключ.

1
ответ дан 1 December 2019 в 20:44
поделиться

Мое предположение - то, что это не пустая строка. Попробуйте следующее для наблюдения то, что Вы получаете:

foreach ($array as $index => $value) {
    echo $index;
    echo ' is ';
    echo gettype($index);
    echo "\n";
}
1
ответ дан 1 December 2019 в 20:44
поделиться

Не уверенный, что сказать Вам. Запущение этого скрипта

<?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
)

Посмотрите, как "пустой" ключ массива был типом, преобразованным в пустую строку?

Вы уверены, что не работаете с копией массива? Если Вы сделали этот вызов для сбрасывания () из функции, возможно, что Вы.

Это было протестировано на PHP 5.2.0

1
ответ дан 1 December 2019 в 20:44
поделиться

Попробованный:

$someList = Array('A' => 'Foo', 'B' => 'Bar', '' => 'Bah');
print_r($someList);
echo '<br/>';
unset($someList['A']);
print_r($someList);
echo '<br/>';
unset($someList['']);
print_r($someList);
echo '<br/>';

Добрался:

Array ( [A] => Foo [B] => Bar [] => Bah )
Array ( [B] => Bar [] => Bah )
Array ( [B] => Bar )

Необходимо проанализировать, куда ключ прибывает из, также...

2
ответ дан 1 December 2019 в 20:44
поделиться

Отправьте код, который Вы используете для удаления элемента также код средства проверки прежде и после той строки.

То, что я ищу, является чем-то вроде этого:

var_export($array);
echo "\n";
unset($array[""]);
var_export($array);

Также отправьте полный вывод обоих var_export строки.

Я ищу что-то вроде этого:

array (
  '' => 1,
)
array (
)
0
ответ дан 1 December 2019 в 20:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: