Як выкарыстоўваць яшчэ/ElseIf?

Я змагаюся з некаторымі, калі-то яшчэ п і будзе мець рэкамендацыі, як усталяваць логіку.

У мяне ёсць наступны код:

//if isset a or b
if (isset(a) || isset(b) ) {
        //if isset a
    if (isset(a)) {
            switch(a) {
                case '1' : $num = '1';
                break;
                case '2' : $num = '2';
                break;
                case '3' : $num = '3';
                break;
            }
    //if not isset a check b for $num
        } else if (isset(b)) {
            switch(b){
                case '1' : $num = '1';
                break;
                case '2' : $num = '2';
                break;
                case '3' : $num = '3';
                break;
            }
        }
//if not isset a and b, set default 
} else {
        $num = '1';
    }

Праблема заключаецца ў тым, што я не разумею, калі выкарыстоўваць яшчэ/яшчэ калі. Так што я хацеў бы ведаць, калі I`m правы з гэтым кодам і маімі каментавалі лініі.

Вялікі дзякуй.

1
гэта сапраўды шматслоўным. чаму вы карыстаецеся аператары камутатара?
дададзена аўтар Jonah, крыніца
гэта сапраўды шматслоўным. чаму вы карыстаецеся аператары камутатара?
дададзена аўтар Jonah, крыніца
гэта сапраўды шматслоўным. чаму вы карыстаецеся аператары камутатара?
дададзена аўтар Jonah, крыніца
дзякуй за адказы на ўсе. Гэты код прызначаны для ўстаноўкі налады мовы па змаўчанні. зыходзіць ад Cookie, Ь сеансу.
дададзена аўтар bonny, крыніца
дзякуй за адказы на ўсе. Гэты код прызначаны для ўстаноўкі налады мовы па змаўчанні. зыходзіць ад Cookie, Ь сеансу.
дададзена аўтар bonny, крыніца
дзякуй за адказы на ўсе. Гэты код прызначаны для ўстаноўкі налады мовы па змаўчанні. зыходзіць ад Cookie, Ь сеансу.
дададзена аўтар bonny, крыніца
@all, I`m шкада, што я зрабіў памылку. Думка, каб скараціць код і не меў на ўвазе толькі 1 і 2, ёсць нашмат больш магчымасцяў, чым толькі 2 ад камутатара. Так што я абнавіў код.
дададзена аўтар bonny, крыніца
@all, I`m шкада, што я зрабіў памылку. Думка, каб скараціць код і не меў на ўвазе толькі 1 і 2, ёсць нашмат больш магчымасцяў, чым толькі 2 ад камутатара. Так што я абнавіў код.
дададзена аўтар bonny, крыніца
@all, I`m шкада, што я зрабіў памылку. Думка, каб скараціць код і не меў на ўвазе толькі 1 і 2, ёсць нашмат больш магчымасцяў, чым толькі 2 ад камутатара. Так што я абнавіў код.
дададзена аўтар bonny, крыніца
Ваш яшчэ калі (Исеть (б)) не трэба, таму што калі а не зададзены, то б павінен быць усталяваны з-за вашага першы, калі пункт. Вы можаце проста выкарыстоўваць яшчэ
дададзена аўтар Chris, крыніца
Ну, гэта залежыць ад яго патрэбаў. Калі а з'яўляецца больш важным, чым б , ён павінен выкарыстоўваць яшчэ замест гэтага. Калі няма, то ён мог пакінуць гэта так.
дададзена аўтар Chris, крыніца
Ну, гэта залежыць ад яго патрэбаў. Калі а з'яўляецца больш важным, чым б , ён павінен выкарыстоўваць яшчэ замест гэтага. Калі няма, то ён мог пакінуць гэта так.
дададзена аўтар Chris, крыніца
Ну, гэта залежыць ад яго патрэбаў. Калі а з'яўляецца больш важным, чым б , ён павінен выкарыстоўваць яшчэ замест гэтага. Калі няма, то ён мог пакінуць гэта так.
дададзена аўтар Chris, крыніца
Што рабіць, калі абодва ўстаноўлены?
дададзена аўтар bfavaretto, крыніца
Што рабіць, калі абодва ўстаноўлены?
дададзена аўтар bfavaretto, крыніца
а і б канстанты?
дададзена аўтар migg, крыніца
а і б канстанты?
дададзена аўтар migg, крыніца
а і б канстанты?
дададзена аўтар migg, крыніца
Вы можаце выдаліць знешні, калі
дададзена аўтар arnaud576875, крыніца
Гэта не абавязкова, але, магчыма, лагічна, але гэта накладныя выдаткі, так. Тое, што ён азначае, што вы маглі б проста зрабіць, калі яшчэ, калі б яшчэ Num = 1
дададзена аўтар Jonast92, крыніца
Гэта не абавязкова, але, магчыма, лагічна, але гэта накладныя выдаткі, так. Тое, што ён азначае, што вы маглі б проста зрабіць, калі яшчэ, калі б яшчэ Num = 1
дададзена аўтар Jonast92, крыніца
Гэта не абавязкова, але, магчыма, лагічна, але гэта накладныя выдаткі, так. Тое, што ён азначае, што вы маглі б проста зрабіць, калі яшчэ, калі б яшчэ Num = 1
дададзена аўтар Jonast92, крыніца

8 адказы

Як правіла, калі ваш , калі-інакш структура занадта складаная (больш за два узроўняў фігурных дужак), гэта самы лепшы час для падзяляй і ўладар падыход: ствараць функцыі, якія вырашаюць аддзеленыя праблемы.

function getNum(&$a, &$b, $options) { 
  if(isset($a) && in_array($a,$options)) return $a;
  if(isset($b) && in_array($b,$options)) return $b;
  return 1;
}

$options = array(1,'2','whatever');
$num = getNum($a,$b,$options);

Пры такім падыходзе праблема з'яўляецца толькі пытаннем цела функцыі, так што вы можаце вырашыць separatedly ад астатняй часткі коды. І гэта жаданая лёгка рамонтапрыдатнасць структура.

3
дададзена
Прывітанне і дзякуй. I`m шкада, што я зрабіў памылку. Думка, каб скараціць код і не меў на ўвазе толькі 1 і 2, ёсць нашмат больш магчымасцяў, чым толькі 2 ад камутатара. Так што я абнавіў код.
дададзена аўтар bonny, крыніца
Добра, гэта вельмі проста, але працуе толькі тады, калі а і Ь з'яўляецца лікавым. у маім выпадку а і Ь змяшчае радка.
дададзена аўтар bonny, крыніца
добра, я tihink гэта будзе працаваць. вялікі дзякуй. добрага дня.
дададзена аўтар bonny, крыніца
Я бачу - я абнавіў адказ - глядзі апошнюю частку кода.
дададзена аўтар Jan Turoň, крыніца
абноўлена зноў (і выдаленая менш цікавая частка адказу)
дададзена аўтар Jan Turoň, крыніца
рады быць карысным
дададзена аўтар Jan Turoň, крыніца
+1 Я не думаю пра in_array.
дададзена аўтар andre, крыніца
<�Р> Наогул, калі калі-інакш структура занадта складаная (больш чым два   ўзроўні кучаравага? бугель), гэта самы лепшы час для разрыву і   ўладар падыход :. ствараць функцыі, якія вырашаюць праблемы адасобленых
  1. У той час як <�моцны> гэта правільна </моцны>, ваша структура прымальная. Большасць праграмістаў будзе жаданне , што гэта зменіцца, але калі вы камфортна працаваць такім чынам, і вы разумееце, ён усё роўна будзе працаваць.
  2. Па-другое, ваш яшчэ калі (Исеть (б)) можа ці не можа быць неабходна ў залежнасці ад таго, як могуць быць устаноўлены. Калі яны не могуць, вы можаце проста замяніць яшчэ калі (Исеть (б)) з яшчэ .

Добра, я не ўпэўнены, ці трэба вам гэта, але вось кароткае тлумачэнне , калі , інакш, калі і яшчэ .

if (condition) is used to test whether the condition is true or false. If it is true, the code between the { and } is executed. Otherwise, it is not.

else if requires the above if's condition to have been false. If your if's condition is false but any following else if is true, that else if will execute.

І, нарэшце, калі ўсё , калі і інакш, калі «s ўмовы вярнуліся ілжыва, яшчэ » s код выконваецца.

Спадзяюся, што гэта дапамагае.

2
дададзена
<�Р> Наогул, калі калі-інакш структура занадта складаная (больш чым два   ўзроўні кучаравага? бугель), гэта самы лепшы час для разрыву і   ўладар падыход :. ствараць функцыі, якія вырашаюць праблемы адасобленых
  1. У той час як <�моцны> гэта правільна </моцны>, ваша структура прымальная. Большасць праграмістаў будзе жаданне , што гэта зменіцца, але калі вы камфортна працаваць такім чынам, і вы разумееце, ён усё роўна будзе працаваць.
  2. Па-другое, ваш яшчэ калі (Исеть (б)) можа ці не можа быць неабходна ў залежнасці ад таго, як могуць быць устаноўлены. Калі яны не могуць, вы можаце проста замяніць яшчэ калі (Исеть (б)) з яшчэ .

Добра, я не ўпэўнены, ці трэба вам гэта, але вось кароткае тлумачэнне , калі , інакш, калі і яшчэ .

if (condition) is used to test whether the condition is true or false. If it is true, the code between the { and } is executed. Otherwise, it is not.

else if requires the above if's condition to have been false. If your if's condition is false but any following else if is true, that else if will execute.

І, нарэшце, калі ўсё , калі і інакш, калі «s ўмовы вярнуліся ілжыва, яшчэ » s код выконваецца.

Спадзяюся, што гэта дапамагае.

2
дададзена

Вы можаце пазбегнуць шматлікіх праблем, патоку кіравання, выкарыстоўваючы наступны метад.

if(isset(a)) {
    $num = a;
} else if(isset(b)) {
    $num = b;
}

$arr = array('1', '2', '3');
if(!in_array($num, $arr)) {
    $num = '1';
}
1
дададзена
прывітанне і дзякуй. I`m шкада, што я зрабіў памылку. Думка, каб скараціць код і не меў на ўвазе толькі 1 і 2, ёсць нашмат больш магчымасцяў, чым толькі 2 ад камутатара. Так што я абнавіў код.
дададзена аўтар bonny, крыніца
@bonny абнаўлення для апрацоўкі любога нумара, які вы хочаце дадаць пазней.
дададзена аўтар andre, крыніца

Вы можаце пазбегнуць шматлікіх праблем, патоку кіравання, выкарыстоўваючы наступны метад.

if(isset(a)) {
    $num = a;
} else if(isset(b)) {
    $num = b;
}

$arr = array('1', '2', '3');
if(!in_array($num, $arr)) {
    $num = '1';
}
1
дададзена
прывітанне і дзякуй. I`m шкада, што я зрабіў памылку. Думка, каб скараціць код і не меў на ўвазе толькі 1 і 2, ёсць нашмат больш магчымасцяў, чым толькі 2 ад камутатара. Так што я абнавіў код.
дададзена аўтар bonny, крыніца
@bonny абнаўлення для апрацоўкі любога нумара, які вы хочаце дадаць пазней.
дададзена аўтар andre, крыніца

Вы можаце пазбегнуць шматлікіх праблем, патоку кіравання, выкарыстоўваючы наступны метад.

if(isset(a)) {
    $num = a;
} else if(isset(b)) {
    $num = b;
}

$arr = array('1', '2', '3');
if(!in_array($num, $arr)) {
    $num = '1';
}
1
дададзена
прывітанне і дзякуй. I`m шкада, што я зрабіў памылку. Думка, каб скараціць код і не меў на ўвазе толькі 1 і 2, ёсць нашмат больш магчымасцяў, чым толькі 2 ад камутатара. Так што я абнавіў код.
дададзена аўтар bonny, крыніца
@bonny абнаўлення для апрацоўкі любога нумара, які вы хочаце дадаць пазней.
дададзена аўтар andre, крыніца
//default
$num = '1';

if(isset(a)) {
  $num = a;
} else if(isset(b)) {
  $num = b;
}
0
дададзена
мая адзіная праблема з гэтым мы не ведаем, ID $ Num = а з'яўляецца сапраўдным. Калі гэта добрае рашэнне.
дададзена аўтар andre, крыніца
//default
$num = '1';

if(isset(a)) {
  $num = a;
} else if(isset(b)) {
  $num = b;
}
0
дададзена
мая адзіная праблема з гэтым мы не ведаем, ID $ Num = а з'яўляецца сапраўдным. Калі гэта добрае рашэнне.
дададзена аўтар andre, крыніца