繁体   English   中英

PHP foreach循环JSON

[英]PHP foreach loop JSON

我知道这个网站上有类似的数百个问题,但我无法让我的代码工作......

我有这个JSON

{
"version":"1.0.0",
"buildDate":20131029,
"buildTime":165127,

"lockPath":"..\\var\\lock",
"scriptPath":"..\\var\\lock",
"connections":
[
{
    "name":"o016561",
    "bez":"GEW-NRW",
    "type":"OVPN"
},
{
    "name":"o016482",
    "bez":"GEW-BW",
    "type":"OVPN"
},
{
    "name":"o019998",
    "bez":"GEW-SH",
    "type":"OVPN"
}
]}

如何访问“名称”值以检查是否存在具有相同名称的现有文件? 我试过了

$json_config_data = json_decode(file_get_contents($json_path,true));

    foreach($json_config_data->connections as $connectionName)
    {
        if($connectionName->name == $fileName)
        {
            $status = 1;
        }
        else
        {
            $status = 0;
        }
    }

但我总是得到$status = 0 ......我认为这是一个简单的解决方案,但我对PHP很新,所以我很乐意提供任何帮助。 谢谢你的建议

您正在为每次迭代重置$status的值,这意味着最后一个连接必须是正确的。 你可能正在寻找一个break声明。

$json_config_data = json_decode(file_get_contents($json_path,true));

$status = 0; //Default to 0
foreach($json_config_data->connections as $connectionName)
{
    if($connectionName->name == $fileName)
    {
        $status = 1;
        break; //End the loop
    }
}

如果最终名称符合您的要求,这只会导致$status == 1 ; 否则你将$status设置回0 当你找到匹配时你应该突破循环:

$status = 0;

foreach ($json_config_data->connections as $connectionName) {
    if ($connectionName->name == $fileName) {
        $status = 1;
        break; // this breaks out of the foreach loop
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM