PHP, если неправильный вывод - PullRequest
0 голосов
/ 18 января 2012

У меня есть файл, и в нем есть число (x), например 1:

$x = fgets($number);
echo $x;

1 - это выход

Теперь я хочу сравнить это число с другим числом:

$x = fgets($number);
$y = 1;
if ($x == $y)
  echo "O.K";
else
  echo "not O.K";

Но на выходе получается not O.K.

Есть идеи, почему это так?

Ответы [ 4 ]

2 голосов
/ 18 января 2012

Если вы используете fgets для чтения чего-либо из файла, то результирующая строка будет содержать завершающий перевод строки.(Как правило, это один для текстовых файлов.)

Либо используйте trim:

$x = trim(fgets(STDIN));

Или введите:

$x = intval(fgets($fh));

Для отладки всегда используйте var_dump() для переменных, которые не приводят к ожидаемым результатам.

1 голос
/ 18 января 2012

fgets захватывает строку из файла с новой строкой, все еще прикрепленной.Есть хороший шанс, что все может испортиться.Попробуйте следующее:

$x = intval( fgets($number) );
$y = 1;
if ($x == $y)
  echo "O.K";  // Removed )

else
  echo "not O.K";  // Removed )

Обратите внимание, что использование == вместо === означает, что строка «1» считается равной числу 1. Если вы хотите убедиться, что оба значения и типы совпадают, используйте ===.

1 голос
/ 18 января 2012

Не видя остальную часть кода, я предполагаю, что это потому, что $number не является допустимым дескриптором файла, и поэтому fgets() возвращает логический FALSE, который будет равен 0.

0 голосов
/ 19 января 2012

Обрабатывать строку как целое число:

if ((int) $ x == $ y)

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