(array)$someemptyvariablethatisnotarray
возвращает array([0] =>)
вместо array()
Как я могу это сделать, чтобы получить пустой массив, который не повторяется, когда я использую его внутри foreach()?
(array)$someemptyvariablethatisnotarray
возвращает array([0] =>)
вместо array()
Как я могу это сделать, чтобы получить пустой массив, который не повторяется, когда я использую его внутри foreach()?
Функция, которую вы используете, называется " casting". Это означает, что переменная принудительно становится заданным типом, в вашем примере - массив. Как преобразование var не всегда очевидно в PHP!
В вашем примере $someemptyvariablethatisnotarray становится массивом с одной записью со значением NULL.
документация по PHP говорит:
Поведение автоматического преобразование в массив в настоящее время undefined.
Чтобы решить ваш код, я бы рекомендовал что-то вроде этого:
if (!is_array($someemptyvariablethatisnotarray) {
$someemptyvariablethatisnotarray = array();
}
$var = array();
будет пустым массив. Это то, что вам нужно?
if(!$variable){
return array();
}
$somevar = empty($somevar) ? array() : (array)$somevar;
Может быть? Хотя я не уверен, что получаю бросок или цель. Позаботьтесь о том, чтобы немного улучшить (возможно, пример того, что вы пытаетесь выполнить?)
Попробуйте unset($someemptyvariablethatisnotarray[0])
:)
как вы?
Я считаю, что это то, что вам нужно:
$something = false;
foreach((array)(empty($something) ? null : $something) as $k){
echo 'never enters here';
}
Вы не получаете пустой массив, потому что когда вы устанавливаете "(массив) false", означает, что у вас будет единственный элемент, и этот элемент будет иметь присвоенное ему значение "FALSE".
То же самое происходит с пустой строкой (не нулевой!) (array) $emptystring вернет массив, который содержит один элемент, который является пустой строкой!
Аналогично выполнению:
array('');
Надеюсь, что это поможет.
Ура!
Когда вы производите массив без массива, он создает массив с этой переменной как единственное значение.
Если вам нужен пустой массив, вам нужно вернуть array()
.
просто используйте count()
, например: if(count($array) == 0 ){ // empty array }