Ошибка при получении первого свойства в массиве PHP для использования в операторе switch

Я работаю над ответом массива в 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 [▶]
]
]

0

Решение

Это не совсем то, как работает оператор 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;
}
0

Другие решения

Удалить 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;
1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector