PHP7.1.13中从字符串创建多维关联数组失败的技术求助
从字符串变量创建多维关联数组的解决方案(PHP 7.1.13)
你遇到的问题本质是:直接存储数组定义代码的字符串变量,PHP不会自动将其解析为数组——你直接写array(...)的时候,PHP会把它当作数组字面量语法处理,但把这段代码放进字符串里,它就只是普通文本了。下面给你两种可行的解决办法:
方法1:使用eval()(仅适用于可控字符串)
如果你的字符串内容完全是自己生成、没有任何用户输入或不可信内容,可以用eval()来执行字符串里的PHP代码:
// 存储数组定义的字符串变量 $arrayString = "array('Projets associatifs'=>['29'=>'Projet 1','15'=>'Projet 2','28'=>'Projet 3'], 'Projets éducatifs'=> ['10'=>'Projet 4','33'=>'Projet 5','34'=>'Projet 6'])"; // 用eval执行字符串中的代码,将结果赋值给变量 eval("\$myVar = $arrayString;"); // 验证结果 print_r($myVar);
⚠️ 注意:eval()存在安全风险,如果字符串包含恶意代码,会直接执行。除非你完全控制字符串内容,否则不推荐使用。
方法2:使用JSON格式(安全推荐)
更安全的方式是把数据用JSON格式存储,然后用json_decode()转换为关联数组:
// 用JSON格式定义数据的字符串 $jsonString = '{ "Projets associatifs": { "29": "Projet 1", "15": "Projet 2", "28": "Projet 3" }, "Projets éducatifs": { "10": "Projet 4", "33": "Projet 5", "34": "Projet 6" } }'; // 第二个参数传true,将JSON对象转换为PHP关联数组 $myVar = json_decode($jsonString, true); // 验证结果 print_r($myVar);
这种方法没有安全隐患,因为JSON只会解析数据结构,不会执行任何代码,是生产环境的优先选择。
内容的提问来源于stack exchange,提问作者cyrcle
相关产品推荐
相关产品推荐

