Условия в массиве в переполнении стека

У меня есть отличная пара переменных с именем $value1, $value2 и т.д. я хочу создать массив ключ для каждой переменной только если переменная не пустая. Что-то вроде этого:

$array = array(
If (!empty($value1)) { "bar" => "foo", }
If (!empty($value2)) { "foo" => "bar", }
);

Как мне это сделать и что было бы хорошей практикой?

0

Решение

Массивы PHP являются динамическими, поэтому вы можете легко добавлять в них данные:

$array = array(); // start with empty one

if (!empty($value1)) $array['bar'] = 'foo';
if (!empty($value2)) $array['foo'] = 'bar';

// you don't even have to specify a key,
// it will just increment accordingly if left out
if (!empty($value3)) $array[] = 'foobar';

это приведет к (если все 3 переменные не пустые):

array(3) {
'a' => 'foo',
'b' => 'bar',
0   => 'foobar'
}

http://php.net/manual/en/language.types.array.php#language.types.array.syntax.modifying

3

Другие решения

Вы не можете сделать это таким образом — если вы используете сокращенную запись массива, вы создадите запись в массиве, независимо от того, есть значение или нет. Вам придется протестировать / настроить каждый ключ индивидуально:

$arr = array();
if (!empty($value)) { $arr['bar'] = 'foo' }
3

Ты можешь использовать Переменные переменные:

$array = array();
$count = 4; //You can have n variables
for($i = 1; $i <= $count; $i++){
if(isset(${'value' . $i})){
$array[$i] = ${'value' . $i};
}
}
-2