Добавить / удалить слово «The» для определенных стран - PullRequest
0 голосов
/ 12 ноября 2008

Я потратил часы, пытаясь заставить мой код работать, это крысиное гнездо if / elses. По сути, я хочу проверить название страны по этим двум массивам:

//if its in this array add a 'THE'    
$keywords = array("bahamas","island","kingdom","republic","maldives","netherlands",
                  "isle of man","ivory","philippines","seychelles","usa");
    //if its in this array, take THE off!
    $exceptions = array("eire","hispaniola");

и это все.

Это посылает мне бэтти, и, честно говоря, мне стыдно показать вам мой код. Скажем так: у него 2 оператора if, 2 оператора else и 2 цикла foreach. Это цветущий беспорядок, и я надеялся, что кто-то может ошеломить меня, показывая мне хороший способ сделать это? Я ожидаю, что есть способ, использующий только одну строку кода или что-то противное. Спасибо.

Ответы [ 6 ]

3 голосов
/ 12 ноября 2008

Это основано на ответе @ sgehrig, но обратите внимание на изменения в ваших исключениях:

//if its in this array add a 'THE'    
$keywords = array("bahamas","island","kingdom","republic","maldives","netherlands",
                  "isle of man","ivory","philippines","seychelles","usa");
//if its in this array, take THE off!
$exceptions = array("the eire","the hispaniola");

$countryKey = strtolower($country);
if (in_array($countryKey, $keywords)) {
    $country = 'The ' . $country;
} else if (in_array($countryKey, $exceptions)) {
    $country = substr($country, 4);
}
2 голосов
/ 12 ноября 2008
$countryKey = strtolower($country);
if (in_array($countryKey, $keywords)) {
    $country = 'The' . $country;
} else if (in_array($countryKey, $exceptions) && stripos($country, 'the ') === 0) {
    $country = substr($country, 4);
}
1 голос
/ 12 ноября 2008

in_array () ваш друг. Нет необходимости зацикливаться на этом.

1 голос
/ 12 ноября 2008

Я полагаю, вы ищете что-то вроде этого:

if(in_array($country, $keywords)) {
    // add 'the'
} elseif(in_array($country, $exceptions)) {
    // remove 'the'
}
1 голос
/ 12 ноября 2008

Почему вы должны просто проверить, содержится ли название страны в строке ( strpos ):

",bahamas,island,kingdom,republic,maldives,netherlands,isle of man,ivory,philippines,seychelles,usa,"

(обратите внимание на начало и конец ',')

Это быстрее, чем регулярное выражение: если ваше ", название страны" - это та строка, добавьте 'THE', иначе удалите ее.

1 голос
/ 12 ноября 2008

Проще всего было бы разбить его на два шага, объявить "the" для стран, которые соответствуют первому списку, а затем просто удалить его, если if соответствует словам во втором списке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...