#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'];
То, что вы хотите там, нечитаемо, трудно отлаживается и в целом является плохой практикой. С этим определенно можно справиться лучше.