如何用PHP匹配JSON文件中指定SSL_SESSION_ID的对象?
问题诊断与修复方案
哦,我一眼就发现问题所在了!你的PHP脚本里的循环逻辑有个致命错误——只要第一个元素的SSL_SESSION_ID不匹配,你就直接用dd()终止了脚本,数组里剩下的元素根本没机会被检查到!
看你的JSON数据,第一个对象的SSL_SESSION_ID是365cb4834f9d7b3d53a3c8b2eba55a49d5cac0112994fff95c690b9079d810af,第二个才是e7bd2b6cd3db89e2d6fad5e810652f2ae087965e64b565ec8933b1a67120b0ac。如果你的$SSL_SESSION_ID变量刚好是第二个值,那脚本在第一次循环时就直接退出,返回不匹配的结果,完全没碰第二个元素。
修正后的代码
把“不匹配就终止”的逻辑移出循环,只在遍历完所有元素后再判断是否找到匹配项:
$sslData = Storage::disk('private')->get('ssl_login.json'); $decodedData = json_decode($sslData, true); // 先初始化匹配状态和结果 $isMatched = false; $matchedItem = null; foreach ($decodedData as $item) { if ($item['SSL_SESSION_ID'] === $SSL_SESSION_ID) { $isMatched = true; $matchedItem = $item; break; // 找到匹配项后直接退出循环,提升效率 } } // 遍历结束后再判断输出 if ($isMatched) { dd("匹配成功!", $matchedItem); // 顺便输出匹配到的完整对象 } else { dd("未找到匹配项"); }
额外调试小技巧
- 先确认
$SSL_SESSION_ID的实际值:可以先执行dd($SSL_SESSION_ID),看看它和JSON里的ID是否完全一致(注意大小写、多余空格或换行符,这些细微差异都会导致全等判断失败)。 - 检查JSON解析是否正常:如果JSON格式有问题,
json_decode会返回null,可以加个验证:if (json_last_error() !== JSON_ERROR_NONE) { dd("JSON解析失败:" . json_last_error_msg()); }
内容的提问来源于stack exchange,提问作者z0mbieKale
相关产品推荐
相关产品推荐

