2016-09-09 4 views
0

У меня есть строка, как это:Превратить строку в массив с PHP переменных

$string = '[miniTrack, boxTrack]'

Я хочу, чтобы превратить его в массив переменных, как это:

$array = [$miniTrack, $boxTrack];

Чтобы я мог выполнять петли и итерации через переменную. И получить доступ к переменным, на которые они ссылаются.

Я пробовал eval, но я не могу понять, как его преобразовать в переменную PHP.

I KNOW THAT THIS IS NOT IDEAL, THE STRUCTURE OF THE DATABASE THIS IS PULLING FROM CAN'T BE ADJUSTED UNFORTUNATELY

+1

Почему вы используете [] в строках? –

+0

Можете ли вы использовать $ string = 'miniTrack, boxTrack' ;? –

+0

@KajaMydeen Нет, к сожалению, – Jordash

ответ

1

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

Вы могли бы попробовать что-то вроде следующего:

$arr = []; 
$string = ['miniTrack, boxtrack']; 
//split the one string into an array, trimming spaces 
$vars= array_map('trim', explode(',', $string[0])); 
foreach($vars as $var) { 
    $arr[] = $var; //add the var to the array 
} 

print_r($arr); 

Array 
(
    [0] => miniTrack 
    [1] => boxtrack 
) 

И если вам нужно создать переменную для каждого элемента, вы можете создать «переменные переменные»:

foreach($vars as $var) { 
    $my_var = $$var; //variable variable 
} 
+0

Часть '$$ var' не превращает ее в переменную – Jordash

+0

, она выводится как пустая, но я думаю, что это близко – Jordash

+0

Nevermind Я делал var не так, это отлично работает! – Jordash

0

Вы можете конвертировать ваши строки в массив, как это. Это может быть не идеально, но вы можете использовать это.

$string = '[miniTrack, boxTrack]'; 
$string = str_replace(array('[',']'),array('', ''), $string); 
$array = explode(',',$string); 

Здесь вы можете перебирать массив так, как хотите.

1

Это должно быть легко:

preg_match_all('~(\w+)~','[miniTrack, boxTrack]', $matches); 
foreach($matches[1] as $var) 
{ 
    print $$var;  
} 
+0

Почему вы печатаете два $$? – Black

+1

, если $ var - miniTrack, $$ var будет $ miniTrack – PyQL

Смежные вопросы