PHP массивы и переменные переменные

#php

#php

Вопрос:

С массивом $s_filters , который выглядит следующим образом (возможно множество разных ключей):

 Array
(
    [genders] => m
    [ages] => 11-12,13-15
)
  

Как я могу программно преобразовать этот массив в этот:

 $gender = array('m');
$ages = array('11-12','13-15');
  

Итак, в основном перебирайте $s_filters и создавайте новые массивы, имена которых являются ключом, а значения должны изменяться на "," ;

Я пытался использовать переменные переменные:

 foreach( $s_filters as $key => $value )
{
    $$key = array();
    $$key[] = $value;
    print_r($$key);
}
  

Но это дает мне cannot use [] for reading ошибки. Я на правильном пути?

Ответ №1:

Следующий код использует другой подход к тому, чего вы пытаетесь достичь. Сначала он использует extract функцию для преобразования массива в локальные переменные, затем перебирает эти новые переменные и explode проверяет их:

 extract($s_filters);

foreach(array_keys($s_filters) as $key)
{
    ${$key} = explode(",", ${$key});
}
  

Ответ №2:

 $s_filters = Array
(
    "genders" => "m",
    "ages" => "11-12,13-15"
);

foreach($s_filters as $key=>$value)
{
    ${$key} = explode(',', $value);
}

header("Content-Type: text/plain");
print_r($genders);
print_r($ages);
  

Ответ №3:

 $gender = $arr['gender'];
  

То, что вы хотите там, нечитаемо, трудно отлаживается и в целом является плохой практикой. С этим определенно можно справиться лучше.