соглашения php в условиях - PullRequest
0 голосов
/ 10 марта 2011

У меня есть система, которая использует ключевые слова для некоторых данных

Есть обычные ключевые слова и мета-ключевые слова - To: all, Tomember: и Togroup:

, и у меня есть следующее условие для проверки метаключевые слова:

if ((strpos($kwd, 'To:all') === 0) ||
    (strpos($kwd, 'Tomember:') === 0) ||
    (strpos($kwd, 'Togroup:') === 0))
{
    /* ... */
}

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

Еще один неправильный способ выглядит так:

if ((strpos($kwd, 'To:all') !== FALSE) ||
    (strpos($kwd, 'Tomember:') !== FALSE) ||
    (strpos($kwd, 'Togroup:') !== FALSE))
{
    /* ... */
}

И, на мой взгляд,правильный путь это:

if ((substr($kwd,0,6) == 'To:all') ||
    (substr($kwd,0,9) == 'Tomember:') ||
    (substr($kwd,0,8) == 'Togroup:'))
{
    /* ... */
}

Есть мысли?

Ответы [ 2 ]

2 голосов
/ 10 марта 2011

Из предложенных вами решений второе неверно, потому что оно вернет true, даже если мета-ключевые слова не появляются в начале $kwd.Два других работают правильно.

Еще лучше будет:

function str_starts_with($haystack, $needle) {
    return substr($haystack, 0, strlen($needle)) == $needle;
}

if (str_starts_with($kwd, 'To:all') ||
    str_starts_with($kwd, 'Tomember:') ||
    str_starts_with($kwd, 'Togroup:'))
{
    // ...
}
1 голос
/ 10 марта 2011
strpos($kwd, 'To:all') === 0

проверит, начинается ли $kwd строка с To:all - она ​​проверит, равна ли позиция To:all в $kwd 0.


strpos($kwd, 'To:all') !== FALSE

проверит, содержит ли $kwd строка To:all - независимо от того, в какой позиции.


substr($kwd,0,6) == 'To:all'

проверяется, если первые 6 символов $kwd равны To:all - что эквивалентно первому решению.


Если вы хотите проверить начинается с , вы будете использовать первое или третье решение.
Personnaly, я бы пошел на основе strpos: мне легче читать / понимать;но это в основном вопрос личных предпочтений.

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

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