Я работаю над ответом массива в PHP Laravel, в результате чего я получаю несколько наборов данных в ответе. Например, внутри массива 1-й элемент массива может быть региональный управляющий или же городской менеджер или же местный менеджер. Получаю ответ в виде объекта JSON и преобразую его в массив PHP. Далее, я пытаюсь написать оператор switch, чтобы проверить, является ли 1-й ключ массива определенным значением, а затем перенаправить на конкретное представление.
Проблема в том, что мне немного трудно использовать переключатель для проверки первого значения в массиве.
Контроллер, содержащий ответ, который я получаю, и оператор 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 [▶]
]
]
Это не совсем то, как работает оператор switch, так как вы уже определили, что хотите запустить переключатель на ключе массива, а не на самом массиве, следующее должно помочь:
$allArrayKeys = array_keys($rs); // get all keys
switch ($allArrayKeys[0]) { // switch whatever is the first key
case 'regional_manager':
// Do stuff for this case here...
break;
case 'city_manager':
// Do stuff for this case here...
break;
case 'local_manager':
// Do stuff for this case here...
break;
}
Удалить true
как второй аргумент из json_decode()
функция, тогда вы сможете получить доступ к данным JSON в виде объекта, как вы сделали в вашем случае коммутатора.
$rs = json_decode(json_encode($resp));
На примечании стороны:
Я предполагаю, что вы передаете неправильный аргумент в switch()
Edit — 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;