Совпадающие пары игру и код события


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

   if (($game == 'DS' && $eventId == 185) || ($game == 'MT' && $eventId == 333) || ($game == 'HK' && $eventId == 51) || ($game == 'main' && $eventId == 1166) ||
            ($game == 'WT' && $eventId == 97)) {
/* some code */
}


323
-2
php
задан 13 декабря 2011 в 02:12 Источник Поделиться
Комментарии
3 ответа

Я бы использовал самый ленивый из возможных вариантов. Использовать некоторые конкатенации строк и список сравнения, как вы только нужно в любом случае сравнивать пары:

if (in_array("$game,$eventId", array("DS,185", "MT,333", "HK,51", "main,1166", "WT,97"))) {

Увидеть in_array. Вы могли бы использовать пары реальный массив для сравнения. Но в этом случае нет необходимости.

2
ответ дан 13 декабря 2011 в 02:12 Источник Поделиться

Еще одним способом может быть:

$eventId = $form_values['eventId'];
$game = $form_values['game'];

$games = array(
'DS' => 185),
'MT' => 333),
'HK' => 51),
'main' => 1166),
'WT' => 97)
);

if(isset($games[$game]) && $games[$game] === $eventId) {
/* some code */
}

Трудно сказать, не зная, где еще можно использовать эти данные. Если ваша структура решения может совпадать с реальными данными для задачи, то вы получите лучший результат.

Я предполагаю, что игры сложнее, чем просто ссылку на кодом. Если бы это было сложнее, то это может выглядеть так:

$games = array(
'DS' => array('eventId' => 185,
'otherData' => 'blah'),
'MT' => array('eventId' => 333,
'otherData' => 'nah')
);

if (isset($games[$game]['eventId']) && $games[$game]['eventId'] === $eventId) {
/* some code */
}

2
ответ дан 14 декабря 2011 в 01:12 Источник Поделиться

Это один из способов вы могли бы сделать это:

<?php

$matches = array(
'DS' . 185,
'MT' . 333,
'HK' . 51,
'main' . 1166,
'WT' . 97
);

print_r($matches);

$game = 'DS';
$eventId = '185';

if (in_array($game.$eventId, $matches)) {
echo "You found a match: $game$eventId\n";
} else {
echo "No match on: $game$eventId\n";
}

$game = 'MT';
$eventId = '185';

if (in_array($game.$eventId, $matches)) {
echo "You found a match: $game$eventId\n";
} else {
echo "No match on: $game$eventId\n";
}

$game = 'main';
$eventId = '1166';

if (in_array($game.$eventId, $matches)) {
echo "You found a match: $game$eventId\n";
} else {
echo "No match on: $game$eventId\n";
}

?>

http://codepad.org/jYGvuJxx

1
ответ дан 13 декабря 2011 в 02:12 Источник Поделиться