У меня есть отличная пара переменных с именем $value1
, $value2
и т.д. я хочу создать массив ключ для каждой переменной только если переменная не пустая. Что-то вроде этого:
$array = array(
If (!empty($value1)) { "bar" => "foo", }
If (!empty($value2)) { "foo" => "bar", }
);
Как мне это сделать и что было бы хорошей практикой?
Массивы 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
Вы не можете сделать это таким образом — если вы используете сокращенную запись массива, вы создадите запись в массиве, независимо от того, есть значение или нет. Вам придется протестировать / настроить каждый ключ индивидуально:
$arr = array();
if (!empty($value)) { $arr['bar'] = 'foo' }
Ты можешь использовать Переменные переменные:
$array = array();
$count = 4; //You can have n variables
for($i = 1; $i <= $count; $i++){
if(isset(${'value' . $i})){
$array[$i] = ${'value' . $i};
}
}