В моем коде у меня есть переменная-присваивание некоторых данных внутри оператора switch. Но эта переменная не выводит данные, когда она вызывает вне оператора switch. Пример кода здесь.
switch (some condition){
case 1:
$userid = $receiver->getMessage();
break;
case 2:
break;
}
echo $userid;
как я решаю эту проблему.
Переменная объявлена внутри switch
Заявление видно снаружи, конечно.
Проблема в том, что когда внутри переключателя не объявлено, вы можете избежать этого двумя способами:
$userid = 'default value';
до switch
echo isset($userid) ? $userid : 'default value';
после switch
,Значение по умолчанию может быть любым, если ничего, использовать пустую строку.
По возможности, это объявить переменную перед вызовом оператора switch.
$userid = "";
switch (some condition){
case 1:
$userid = $receiver->getMessage();
break;
case 2:
break;
}
echo $userid;
Вы ничего не делаете с делом 2 или же дефолт. Если вы структурируете это так, то это должно работать.
switch ($condition) {
case 1:
$userId = $receiver->getMessage();
break;
case 2:
$userId = $receiver->someOtherMessage();
break;
default:
$userId = null;
break;
}
В другой момент вы можете проверить, действительно ли был установлен userId.