使用PHP变量将字符串转换为数组

时间:2016-09-09 16:19:33

标签: php arrays eval

我有一个这样的字符串:

$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

3 个答案:

答案 0 :(得分: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
}

答案 1 :(得分:1)

它应该像以下一样简单:

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

答案 2 :(得分:0)

您可以将字符串转换为此类型的数组。它可能不太理想,但您可以试试这个。

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

在这里,您可以根据需要迭代数组。