Php 是否有一种方法可以将另一个索引中的索引视为IF条件?

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

我只因一个小问题就发疯了

我从我创建的API中获取几个JSON,并将它们添加到一个数组中进行解码,然后以明文形式将信息返回给我

在if中,我想找到一种方法来表明,如果在其中一个JSON中,与作为函数参数传递的信息相比,某些信息是正确的,那么让布尔变量返回True

目前,我得到的回报如下:

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;
}