PHP - пустой массив - PullRequest
       1

PHP - пустой массив

12 голосов
/ 24 марта 2011

(array)$someemptyvariablethatisnotarray возвращает array([0] =>) вместо array()

Как я могу сделать так, чтобы я получал пустой массив, который не повторяется, когда я использую его внутри foreach ()?

Ответы [ 8 ]

25 голосов
/ 24 марта 2011
$var = array();

очистит массив. Это то, что вы ищете?

18 голосов
/ 24 марта 2011

Используемая вами функция называется " casting ". Это означает, что переменная вынуждена стать данным типом, в вашем примере это массив. Как преобразовывается var, не всегда очевидно в PHP!

В вашем примере $ someemptyvariablethatisnotarray становится массивом с одной записью со значением NULL.

В документации PHP написано:

Поведение автоматического преобразование в массив в настоящее время не определено.

Чтобы решить ваш код, я бы порекомендовал что-то вроде этого:

if (!is_array($someemptyvariablethatisnotarray) {
    $someemptyvariablethatisnotarray = array();
}
4 голосов
/ 24 марта 2011
if(!$variable){
        return array();
}
3 голосов
/ 24 марта 2011

Как дела?

Я считаю, что это то, что вы ищете:

$something = false;
foreach((array)(empty($something) ? null : $something) as $k){
    echo 'never enters here';
}

Вы не получаете пустой массив, потому что, когда вы устанавливаете "(массив) false", это означает, что у вас будет один элемент, и этому элементу будет присвоено значение" FALSE ".

То же самое происходит с пустой строкой (неnull one!) (array) $ emptystring вернет массив, содержащий единственный элемент, который является пустой строкой!

Аналогично выполнению:

array('');

Надеюсь, это поможет.

Ура!

3 голосов
/ 24 марта 2011

Попробуйте unset($someemptyvariablethatisnotarray[0]):)

3 голосов
/ 24 марта 2011
$somevar = empty($somevar) ? array() : (array)$somevar;

Может быть? Хотя я не уверен, что получу роль или цель. Хотите еще немного проработать (может быть, пример того, что вы пытаетесь достичь?)

2 голосов
/ 24 марта 2011

Когда вы преобразуете не массив в виде массива, он создает массив с этой переменной в качестве единственного значения.

Если вам нужен пустой массив, вам нужно вернуть array().

0 голосов
/ 24 апреля 2013

просто используйте count(), например: if(count($array) == 0 ){ // empty array }

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...