PHP - Как проверить, есть ли в строке 0 и 1 или 0 или 1 - PullRequest
1 голос
/ 20 января 2020

У меня есть эта функция:

function return_a_number($source) {
  switch ($source) {
    case "0&0&0&0":
      return 0;
    case "0&0&1&1":
      return 1;
    case "1&1&1&1":
      return 2;
  }
}

Где $ source имеет ipoteti c число, соединенное с &.

Как я могу вернуть 0, если $ source имеет только '0' символы или 1, если имеют символы «0» и «1», или 2, если имеют только символы «1»?

Ответы [ 2 ]

3 голосов
/ 20 января 2020
// If there is a 0, ( check if there's also a one -> 1 or 0 ) : else only 1s => 2
return strpos($source, '0') !== false ? ( strpos($source, '1') !== false ? 1 : 0 ) : 2;

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

1 голос
/ 20 января 2020

Вот как должна выглядеть логика c в вашей функции, она проста для понимания и охватывает все три случая. Имейте в виду, что вы всегда должны сначала проверять 0 и 1, а затем делать это индивидуально

if (strpos($source, '0') !== false && strpos($source, '1') !== false) {
    return 0;
 }
elseif (strpos($source, '0') !== false) {
    return 1;
}
else {
    return 2
}

Вы можете поставить еще один 'elseif' вместо последнего 'else', если вы можете получить результат, отличный от 3 результата, которые вы упомянули

...