Сократить список операторов IF THEN с var1 до var20 ... PHP - PullRequest
0 голосов
/ 24 июня 2011

Я знаю, что это можно сократить и кому-то будет легко. Я хотел бы использовать выражение, чтобы сократить это до нескольких строк. Каждая из этих переменных имеет различное значение и может присутствовать или не присутствовать. Спасибо за вашу помощь!

    if ( $lang1 ) {
        echo $lang1 ."<br>";
    }
    if ( $lang2 ) {
        echo $lang2 ."<br>";
    }
    if ( $lang3 ) {
        echo $lang3 ."<br>";
    }
    if ( $lang4 ) {
        echo $lang4 ."<br>";
    }
    if ( $lang5 ) {
        echo $lang5 ."<br>";
    }
    if ( $lang6 ) {
        echo $lang6 ."<br>";
    }
    if ( $lang7 ) {
        echo $lang7 ."<br>";
    }
    if ( $lang8 ) {
        echo $lang8 ."<br>";
    }
    if ( $lang9 ) {
        echo $lang9 ."<br>";
    }
    if ( $lang10 ) {
        echo $lang10 ."<br>";
    }
    if ( $lang11 ) {
        echo $lang11 ."<br>";
    }
    if ( $lang12 ) {
        echo $lang12 ."<br>";
    }
    if ( $lang13 ) {
        echo $lang13 ."<br>";
    }
    if ( $lang14 ) {
        echo $lang14 ."<br>";
    }
    if ( $lang15 ) {
        echo $lang15 ."<br>";
    }
    if ( $lang16 ) {
        echo $lang16 ."<br>";
    }
    if ( $lang17 ) {
        echo $lang17 ."<br>";
    }
    if ( $lang18 ) {
        echo $lang18 ."<br>";
    }       
    if ( $lang19 ) {
        echo $lang19 ."<br>";
    }
    if ( $lang20 ) {
        echo $lang20 ."<br>";
    }

Ответы [ 6 ]

5 голосов
/ 24 июня 2011

Сохранить значения в массиве:

$langs = array(...);
foreach($langs as $lang)
    echo $lang . '<br>';

Вы можете использовать array_push() для добавления элементов в массив.

1 голос
/ 24 июня 2011

вы можете сделать это таким образом, однако, я не рекомендую это:

for ( $i = 1; $i < 20; $i++ )
    if ( ${"lang$i"} ) // better : if ( !empty(${"lang$i"}) )
        echo ${"lang$i"} . "<br>";

, который точно сделает то, что вы просили.Но, как я уже сказал, я не рекомендую этого, так как в других ответах на ваш вопрос лучшее решение.

0 голосов
/ 24 июня 2011
<?php
$lang1 = 'sss';
$lang2= 'gddd';
    for ($i=1;$i<=20;$i++)
{
    $langname ="lang$i"; 
if ($$langname)
{
    echo ($$langname);
}
}
?>
0 голосов
/ 24 июня 2011

В дополнение к тому, что ответил Рэйф Кеттлер:

$langs = array(...);
$desired_lang = '';
foreach($langs as $lang){
    if($lang == $desired_lang)
        echo $lang
}

РЕДАКТИРОВАТЬ

Благодаря понижающим голосам, я только что понял, что приведенный выше код - самая глупая вещь, которую я когда-либо писал, поэтому я 'Я исправлю это:

if(in_array($desired_lang,$langs))
    echo $langs[$desired_lang]

И, как Циклон спросил в комментариях, если ОП хочет больше, чем один язык, он может сделать:

$langs = array('lang1', 'lang2','lang3');
$desired_langs = array('lang1','lang2');
foreach($desired_langs as $desired_lang){
    if(in_array($desired_lang, $langs)){
        echo $langs[$desired_lang]
    }
}

Понижающие голоса хороши, они показывают вамвы не правы: D

0 голосов
/ 24 июня 2011

Вместо этого используйте массив, например, для каждого из них:

$lang[10] = 'asdf';

, где 10 - ключ, а asdf - ваше значение.

Затем используйте цикл for:

for ($i = 1; $i <= 20; $i++) if ($lang[$i]) echo ($lang[$i] . "<br />");
0 голосов
/ 24 июня 2011

Доказательство: http://codepad.org/qYHZwcbu

$my_language_array = array(0 => 'English', 1 => 'French');

foreach($my_language_array as $language)
    if (!empty($language))
        echo $language . "<br />";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...