首页 > 解决方案 > 获取 PHP 数组中的第一个属性以在 switch 语句中使用时出错

问题描述

我正在处理 PHP Laravel 中的数组响应,借此我在响应中获得多组数据。例如在数组内部,数组的第一个元素可能是region managercity managerlocal manager。我以 JSON 对象的形式获取响应并将其转换为 PHP 数组。接下来,我正在尝试编写一个 switch 语句来检查第一个数组键是否为某个值,然后重定向到特定视图。问题是我发现使用开关来测试数组中的第一个值有点困难

包含正在获取的响应和其中的 switch 语句的控制器

public function getAgentHierachy(){

        $resp = GeneralHelper::global_Curl([],'api/v1/b2b/life/agent-hierarchy')->data;

        //Converting from JSON object to PHP array
        $rs =  json_decode(json_encode($resp),true);

        $result = '';

        switch($rs)
        {
            case $rs->regional_manager:

                $result = view('pages.general.pol', compact('rs'));
            break;

            case $rs->city_manager:

                $result = view('B2B::pages.general.pol', compact('rs'));
            break;

            case $rs->local_manager:

                $result = view('B2B::pages.general.pol', compact('rs'));

            break;

        }

        return $result;               
    }

作为包含不同案例的响应,我可能会获得示例数据

array:1 [▼
  "regional_manager" => array:1 [▼
    0 => array:3 [▶]
  ]
]

array:1 [▼
  "city_manager" => array:1 [▼
    0 => array:3 [▶]
  ]
]

array:1 [▼
  "local_manager" => array:1 [▼
    0 => array:3 [▶]
  ]
]

标签: phparraysswitch-statement

解决方案


从函数中删除true作为第二个参数,json_decode()然后您将能够像在 switch 案例中一样访问对象形式的 json 数据。

$rs =  json_decode(json_encode($resp)); 

附带说明:我猜你在传递错误的论点switch()

编辑 - 01:您可以将代码修改为如下所示:

        $viewName = $res = '';
        $str = 'regional_manager';
        switch($str)
        {
            case 'regional_manager':
                $res = $rs->regional_manager;
                $viewName = 'pages.general.pol';
            break;

            /*
              and so on
             */

        } //switch case ends
        $result = view($viewName,compact('res'));
        return $result;

推荐阅读