【发布时间】:2015-07-05 02:55:28
【问题描述】:
<?php
$postcode=$_POST['script'];
// $myfile = file_get_contents("./aircondata/".$postcode.".json");
// echo $myfile;
$myfile = '{
"1": { "Brand":"MITSUBISHI HEAVY INDUSTRIES, LTD.", "Model_No":"SRK20ZMXA-S / SRC20ZMXA-S", "C.Power_Inp_Rated":0.35, "H.Power_Inp_Rated":0.45, "KWH":1881.95, "Cost":564.585},
"2": { "Brand":"MITSUBISHI HEAVY INDUSTRIES LTD.", "Model_No":"SRK20ZIX-S", "C.Power_Inp_Rated":0.35, "H.Power_Inp_Rated":0.45, "KWH":1881.95, "Cost":564.585},
"3": { "Brand":"MITSUBISHI HEAVY INDUSTRIES LTD.", "Model_No":"SRK20ZJX-S", "C.Power_Inp_Rated":0.35, "H.Power_Inp_Rated":0.45, "KWH":1881.95, "Cost":564.585},
"4": { "Brand":"TOSHIBA", "Model_No":"RAS-07PKVP-E/PAVP-E", "C.Power_Inp_Rated":0.355, "H.Power_Inp_Rated":0.44, "KWH":1908.835, "Cost":572.6505},
"5": { "Brand":"CARRIER", "Model_No":"50PCH006", "C.Power_Inp_Rated":0.4, "H.Power_Inp_Rated":0.4, "KWH":2150.8, "Cost":645.24}
}';
$ac_decoded = json_decode($myfile, true);
echo $ac_decoded;
foreach ($ac_decoded as $key => $value) {
if($key=="1"){
echo $value["Brand"];
}
}
echo "okay";
fclose($myfile);
?>
我的问题是,当 json 数组存在于同一个 .php 文件中时,上述代码有效,但注释掉的代码(使用 file_get_contents)不适用于 json_decode,仅在回显时有效。 请帮助...谢谢!
回答第一个回复的建议,下面是.json文件,不知道格式是否正确
'{
"1": { "Brand":"MITSUBISHI HEAVY INDUSTRIES, LTD.", "Model_No":"SRK20ZMXA-S / SRC20ZMXA-S", "C.Power_Inp_Rated":0.35, "H.Power_Inp_Rated":0.45, "KWH":1881.95, "Cost":564.585},
"2": { "Brand":"MITSUBISHI HEAVY INDUSTRIES LTD.", "Model_No":"SRK20ZIX-S", "C.Power_Inp_Rated":0.35, "H.Power_Inp_Rated":0.45, "KWH":1881.95, "Cost":564.585},
"3": { "Brand":"MITSUBISHI HEAVY INDUSTRIES LTD.", "Model_No":"SRK20ZJX-S", "C.Power_Inp_Rated":0.35, "H.Power_Inp_Rated":0.45, "KWH":1881.95, "Cost":564.585},
"4": { "Brand":"TOSHIBA", "Model_No":"RAS-07PKVP-E/PAVP-E", "C.Power_Inp_Rated":0.355, "H.Power_Inp_Rated":0.44, "KWH":1908.835, "Cost":572.6505},
"5": { "Brand":"CARRIER", "Model_No":"50PCH006", "C.Power_Inp_Rated":0.4, "H.Power_Inp_Rated":0.4, "KWH":2150.8, "Cost":645.24}
}'
【问题讨论】:
-
代码看起来不错。仔细检查文件内容是有效的 JSON。或在此处发布文件内容。顺便说一句,您可能会重新考虑从用户输入的路径中打开和读取文件内容,而无需进行某种验证。想想是否有人向“脚本”发布了一个以“../../”开头的值
-
包含文件时是否收到任何错误或通知?
-
$myfile = fopen("./aircondata/".$postcode.".json", "r") or die("无法打开文件!");
-
你的json文件格式不正确。删除单引号“'”
-
@Rasclatt 是对的,.json 文件中的单引号需要去掉。这将引发
malformed JSON错误