我想从字符串创建多维关联数组。从包含字符串的变量创建数组不起作用。 (使用PHP 7.1.13测试)
有效的示例:
$myVar = array('Projets associatifs'=>['29'=>'Projet 1','15'=>'Projet 2','28'=>'Projet 3'],
'Projets éducatifs'=> ['10'=>'Projet 4','33'=>'Projet 5','34'=>'Projet 6']);
print_r($myVar);
返回好结果:
Array
(
[Projets associatifs] => Array
(
[29] => Projet 1
[15] => Projet 2
[28] => Projet 3
)
[Projets éducatifs] => Array
(
[10] => Projet 4
[33] => Projet 5
[34] => Projet 6
)
)
不起作用的示例:
$myVar2 = "'Projets associatifs'=>['29'=>'Projet 1','15'=>'Projet 2','28'=>'Projet 3'],'Projets éducatifs'=>['10'=>'Projet 4','33'=>'Projet 5','34'=>'Projet 6']";
$myVar3 = array($myVar2);
print_r($myVar3);
返回错误结果:
Array
(
[0] => 'Projets associatifs'=>['29'=>'Projet 1','15'=>'Projet 2','28'=>'Projet 3'],'Projets éducatifs'=>['10'=>'Projet 4','33'=>'Projet 5','34'=>'Projet 6']
)
如何使我的字符串变量$myVar2
被接受用于创建数组?
答案 0 :(得分:-1)
如果没有一些疯狂的正则表达式来解析字符串,你就无法做到这一点。如果你可以将字符串转换为json,那可能会有效。
所以这个 “'Projets associatifs'=> ['29'=>'Projet 1','15'=>'Projet 2','28'=>'Projet 3'],'Projetséducatifs'=> ['10'=>'Projet 4','33'=>'Projet 5','34'=>'Projet 6']“;
会变成这样的东西。
{Projets associatifs:{29:'Projet 1'},{15:'Projet 2'}}
我没有对此进行测试,因此您需要弄清楚如何编写json以满足您的需求,但是您可以通过json_decode()运行该字符串,它将创建您所需的结构寻找。
请注意json适用于对象。因此,如果对象不起作用,您将从json_decode中获取对象,然后转换为关联数组。
然而,如果你发现自己正在做这样愚蠢的事情,你应该重新评估你想要做的事情,并且可能找到解决方案的另一条路径。
答案 1 :(得分:-1)
由于它是PHP中的有效数组定义,因此可以eval
将其作为PHP代码:
eval("\$myVar3 = array($myVar2);");
print_r($myVar3);
或者将其转换为JSON并对其进行解码。可能会更容易,但我让这个工作:
$myVar2 = str_replace(["'", '=>', '[', ']'], ['"', ':', '{', '}'], $myVar2);
$myVar3 = json_decode('{'.$myVar2.'}', true);
print_r($myVar3);
但是如果你正在创建/存储它,那么你最好只将JSON存储在第一位。