При выполнении запроса в банке данных я могу получить оба массива в результате:
Array
(
[] => 401
[BETA] => 223
[GAMMA] => 195
[DELTA] => 189
)
Array
(
[ALFA] => 294
[BETA] => 223
[GAMMA] => 195
[DELTA] => 189
)
Что я могу сделать, чтобы исключить всю строку, когда ключ пуст?
Я пробовал что-то подобное, но безуспешно
foreach($array as $key => $value){
if(array_key_exists($key, $value) && is_null($value[$key])) {
unset($key);
}
$array = $value;
}
Спасибо заранее!
Поскольку ключ является пустой строкой, вы можете удалить этот конкретный ключ:
$test = array(''=>'test', 'test'=>'test');
unset($test['']);
print_r($test);
Или удалите все ключи, которые содержат только пробелы:
function array_remove_blank_keys($array) {
foreach ($array as $key => $value) {
if (preg_match('/^\s*$/', $key)) {
unset($array[$key]);
}
}
return $array;
}
$test = array(''=>'test', 'test'=>'test');
print_r($test);
print_r(array_remove_blank_keys($test));
Ключ не null
, это пустая строка. например:
$foo = array(""=>"bar");
print_r($foo);
Выход:
Array
(
[] => bar
)
Так что вы хотели бы либо empty($key)
или же $key == ''
как ваш тест, разница в том, что empty()
может соответствовать довольно многим вещам.
Использовать empty($var)
функция для оценки. Он считает эти значения пустыми и возвращает true, если ему присваивается один:
null
: нулевое значение,
''
: пустой строки,
0
: числовой ноль. Только если он не назначен прямым или косвенным присваиванием, таким как $ var = 0 или $ var = 1-1. Обратите внимание, что нулевая строка ('0'
) не пусто,
array()
: пустой массив,
$var;
: неназначенная переменная,
false
: значение false,
' '
: просто пробел
Ключи никогда не бывают пустыми. Они будут иметь числовой индекс.
Так что просто проверьте, является ли ключ числовым, а затем не установленным.
foreach($array as $key => $value){
if(is_numeric($key)) {
unset($key);
}
}
и вам не нужно делать $ array = $ value;