Php 是否有一种方法可以将另一个索引中的索引视为IF条件?
我只因一个小问题就发疯了 我从我创建的API中获取几个JSON,并将它们添加到一个数组中进行解码,然后以明文形式将信息返回给我 在if中,我想找到一种方法来表明,如果在其中一个JSON中,与作为函数参数传递的信息相比,某些信息是正确的,那么让布尔变量返回True 目前,我得到的回报如下:Php 是否有一种方法可以将另一个索引中的索引视为IF条件?,php,json,Php,Json,我只因一个小问题就发疯了 我从我创建的API中获取几个JSON,并将它们添加到一个数组中进行解码,然后以明文形式将信息返回给我 在if中,我想找到一种方法来表明,如果在其中一个JSON中,与作为函数参数传递的信息相比,某些信息是正确的,那么让布尔变量返回True 目前,我得到的回报如下: array(3) { [0]=> array(3) { ["idUserBrasserie"]=> int(1) ["fK_idUser"]=> int(1) ["fK_idBrasserie
array(3) { [0]=> array(3) { ["idUserBrasserie"]=> int(1) ["fK_idUser"]=> int(1) ["fK_idBrasserie"]=> int(1) } [1]=> array(5) { ["idUser"]=> int(1) ["name"]=> string(6) "Mat" ["lastName"]=> string(4) "Anderson" ["email"]=> string(16) "brewdawg@beer.ch" ["pwd"]=> string(10) "1234567890" } [2]=> array(3) { ["idBrasserie"]=> int(1) ["name"]=> string(8) "BrewDawg" ["description"]=> string(22) "Craft beer and sausage" } }
Notice: Undefined index: fK_idBrasserie in /var/www/html/Controllers/MaBrasserieController.php on line 21
Notice: Undefined index: in /var/www/html/Controllers/MaBrasserieController.php on line 21
Notice: Undefined index: fK_idBrasserie in /var/www/html/Controllers/MaBrasserieController.php on line 21
Notice: Undefined index: in /var/www/html/Controllers/MaBrasserieController.php on line 21
Notice: Undefined index: fK_idBrasserie in /var/www/html/Controllers/MaBrasserieController.php on line 21
Notice: Undefined index: in /var/www/html/Controllers/MaBrasserieController.php on line 21
bool(false)
以下是视图中的php部分:
<?php MaBrasserieController::GetUserBrasserie(1,1,1)?>
bool$myBrewery返回False,如果条件正确,我希望它返回True
有人知道我如何才能做到这一点吗?只有三个获取的json字符串中的第一个包含所需的键/元素 我认为获取或处理后两个没有任何意义。即使它们确实包含目标键,也应该执行早期条件返回以优化性能
public static function GetUserBrasserie($idUserBrasserie, $fk_idBrasserie, $fk_idUser) {
$array = json_decode(file_get_contents('http://backend:5000/api/User_Brasserie/' . $idUserBrasserie), true);
if ($array["fK_idBrasserie"] === $fK_idBrasserie && $array["fK_idUser"] === $fK_idUser) {
return true;
}
return false;
}
如果您可能需要检查所有三个数据源,但不知道目标键是否存在,请一次检查一个,然后使用
isset()
以避免引起注意
public static function GetUserBrasserie($idUserBrasserie, $fk_idBrasserie, $fk_idUser) {
$urls = [
'http://backend:5000/api/User_Brasserie/' . $idUserBrasserie,
'http://backend:5000/api/User/' . $fk_idUser,
'http://backend:5000/api/Brasserie/' . $fk_idBrasserie,
];
foreach ($urls as $url) {
$array = json_decode(file_get_contents($url), true);
if (isset($array["fK_idBrasserie"], $array["fK_idUser"]) && $array["fK_idBrasserie"] === $fK_idBrasserie && $array["fK_idUser"] === $fK_idUser) {
return true;
}
}
return false;
}
请去读一读。我们没有您实际的JSON数据,因此请提供相关示例,以便您所显示的内容可供此处的人员复制。您的代码
$array[]=
将为添加到其中的每一项创建数字索引(按顺序)。因此,在foreach
中,当您按实际文本键名对$array
进行索引时,它将失败。这些是您在参考第21行时看到的错误消息。看起来您想要做的是将所有json合并到$array
中,但没有数字索引。我可以提供一个答案。但我会等到有人来提供比我想的更简单的东西。好的,谢谢你的回答,我会试试的。非常感谢。我使用了你添加的第二种解决方案,非常完美
public static function GetUserBrasserie($idUserBrasserie, $fk_idBrasserie, $fk_idUser) {
$urls = [
'http://backend:5000/api/User_Brasserie/' . $idUserBrasserie,
'http://backend:5000/api/User/' . $fk_idUser,
'http://backend:5000/api/Brasserie/' . $fk_idBrasserie,
];
foreach ($urls as $url) {
$array = json_decode(file_get_contents($url), true);
if (isset($array["fK_idBrasserie"], $array["fK_idUser"]) && $array["fK_idBrasserie"] === $fK_idBrasserie && $array["fK_idUser"] === $fK_idUser) {
return true;
}
}
return false;
}