简单的if else语句不起作用

时间:2011-12-27 21:16:26

标签: php

我有一个只有48的page.html。我无法得到这个if语句。

<?php 
  $myFile = 'http://site.com/page.html';
  $content = file_get_contents($myFile);
?>
<?php $num = "48"; ?>
<?php if ($content == $num): ?>
    true
<?php else: ?>
    false
<?php endif;  ?>

如果我这样做就行了。

<?php if ($content == 48): ?>
    true
<?php else: ?>
    false
<?php endif;  ?>

如何更改此功能以使其正常工作?

3 个答案:

答案 0 :(得分:2)

$content的值很可能包含"48\n",即数字48后跟一个新行(或类似的东西)。这与int 48相同(非严格比较),但不与字符串"48"相同。

解决这个问题的方法是在进行比较之前将$content强制转换为int:

$content = (int) file_get_contents($myFile);

答案 1 :(得分:1)

认为这应该有效:

<?php 
  $myFile = 'http://site.com/page.html';
  $content = file_get_contents($myFile);
?>
<?php $num = "48"; ?>
<?php if (trim($content) == $num): ?>
    true
<?php else: ?>
    false
<?php endif;  ?>

..使用删除这些字符的trim()

  • “”(ASCII 32(0x20)),一个普通的空间。
  • “\ t”(ASCII 9(0x09)),一个标签。
  • “\ n”(ASCII 10(0x0A)),新行(换行符)。
  • “\ r”(ASCII 13(0x0D)),回车。
  • “\ 0”(ASCII 0(0x00)),NUL字节。
  • “\ x0B”(ASCII 11(0x0B)),垂直制表符。

答案 2 :(得分:0)

您正在评估第一个代码段中的字符串是否为第二个字节中的整数。如果这是他们所追求的数据类型,请确保将其转换为整数。

$content = (int) file_get_contents($myFile);