You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:50:53