Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 简单的if-else语句获胜';行不通_Php - Fatal编程技术网

Php 简单的if-else语句获胜';行不通

Php 简单的if-else语句获胜';行不通,php,Php,我有一个page.html,里面只有48个。我不能让这个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 e

我有一个page.html,里面只有48个。我不能让这个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;  ?>

真的
假的

我怎样才能改变它使其工作?

我认为这应该工作:

<?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;  ?>

真的
假的
..通过使用删除以下字符:

  • “”(ASCII 32(0x20)),一个普通空格
  • “\t”(ASCII 9(0x09)),一个选项卡
  • “\n”(ASCII 10(0x0A)),一个新行(换行符)
  • “\r”(ASCII 13(0x0D)),回车符
  • “\0”(ASCII 0(0x00)),NUL字节
  • “\x0B”(ASCII 11(0x0B)),一个垂直选项卡

最有可能的是
$content
的值包含
的“48\n”
,即数字48后面跟一个新行(或类似的内容)。这等于(非严格比较)int
48
,但不等于字符串
“48”

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

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

在第一个代码段中计算字符串,在第二个代码段中计算整数。确保将其强制转换为整数,如果这是您要查找的数据类型

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

尝试将$num强制转换为整数,$num=“48”是一个字符串。是否确认
$content
的值为
48
。使用
echo确认文件中
48
后是否有换行符?另外,别忘了PHP拥有任何编程语言中最愚蠢的操作符之一:.48==“48”应该是真的,所以这不是问题1
echo$content
返回48 2。文件中只有一行。不确定什么是“换行符”。3.这只是我正在做的一个小测试。真正的$num将是一个表的id,它返回一个常规的48。请告诉我,我想混淆的是字符串和整数之间的比较。