提问人:Natali 提问时间:11/23/2022 最后编辑:Natali 更新时间:11/28/2022 访问量:97
使用占位符从PHP中的嵌套JSON文件中获取值
Get Value from nested JSON File in PHP with Placeholder
问:
我想编写自己的小翻译函数。
我的 JSON 文件如下所示:
{
"start": {
"body": {
"headline": "Hello, world!"
}
}
}
在我的PHP前端中,我只想为翻译的字符串编写占位符。所以 id do
<h1><?php trans('start.body.headline'); ?></h1>
我的PHP函数很简单,看起来像:
function trans($string) {
if (!isset($_GET['langID']))
$lang = 'de';
else
$lang = $_GET['langID'];
$str = file_get_contents('lang/'. $lang . '.json');
$json = json_decode($str);
$string = str_replace('.', '->', $string);
echo $json->$string;
}
但我没有得到结果。
My Function 中的$string正确:
start->body->headline
当我写的时候:
echo $json->start->body->headline;
我得到“你好,世界”。
echo $json->$string;
是一样的,但不起作用。为什么?
答:
0赞
Gev99
11/23/2022
#1
由于您正在为函数参数使用某个变量名称$string,请在此处使用其他变量名称。
$keyword = str_replace('.', '->', $string);
echo $json->{$keyword};
您也可以使用返回方法
function trans($string) {
if (!isset($_GET['langID']))
$lang = 'de';
else
$lang = $_GET['langID'];
$str = file_get_contents('lang/'. $lang . '.json');
$json = json_decode($str);
$keyword = str_replace('.', '->', $string);
return $json->{$keyword};
}
而不是在 HTML 中使用短方式 echo
<h1><?= trans('start.body.headline'); ?></h1>
评论