Основная проблема PHP Я думаю, что ответ будет включать в себя массивы - PullRequest
1 голос
/ 10 сентября 2009

Я хочу сделать условное выражение if, которое делает это

if($get_['b']=="1") {

$offer1a=$offer1XXX;
$offer1e=$offer1YYY;

$offer2a=$offer2XXX;
$offer2e=$offer2YYY;

$offer3a=$offer3XXX;
$offer3e=$offer3YYY;

$offer4a=$offer4XXX;
$offer4e=$offer4YYY;

}

Весь способ предложить # 12. Кажется, что много писать. Есть другие значения, такие как $ offer1b, которые я хочу оставить в покое. Какой лучший способ сделать это. Я думаю, что массив, но мне неясно, как это сделать.

Ответы [ 3 ]

1 голос
/ 10 сентября 2009

Я уверен, что есть еще тысяча оптимизаций, но чтобы сделать буквально то, что вы просите, вы можете использовать цикл for как таковой:

if ($_GET['b'] == 1) {
  for ($k = 1; $k <= 12; $k++) {
    ${"offer${k}a"} = ${"offer${k}XXXX"};
    ${"offer${k}e"} = ${"offer${k}YYYY"};
  }
}

Лучшим решением было бы использовать массив вместо всех этих отдельных переменных:

for ($k = 1; $k <= 12; $k++) {
  $offers[$k]['a'] = $offers[$k]['XXXX'];
  $offers[$k]['e'] = $offers[$k]['YYYY'];
}
0 голосов
/ 10 сентября 2009

Массивы - ваш друг:

for ($i = 1; $i <= 12; ++$i) {
    $offer[$i]['a'] = $offer[$i]['XXX'];
    $offer[$i]['e'] = $offer[$i]['YYY'];
}

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

$offer = array(
    1 => array(
       'a' => "something",
       'b' => "somethingElse",
        'XXX' => "blah",
        'YYY' => "foo"  
    ),
    array(
        'a' => '...'
    )
); 
0 голосов
/ 10 сентября 2009

Если бы вы изменили $offer на массив, вы могли бы сделать что-то вроде этого:

if ($get_['b'] == "1") {
    for ($i = 1; i <= 12; i++) {
        $offer[$i]['a'] = $offer[$i]['XXX'];
        $offer[$i]['e'] = $offer[$i]['YYY'];
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...