簡體   English   中英

從txt文件讀取時,is_numeric不起作用?

[英]is_numeric does not work when reading from txt file?

在文本文件中,我有一個像這樣的文件:

Olivia
7

Sophia
8

Abigail
9

Elizabeth
10

Chloe
11

Samantha
12

我只想打印所有名稱,而忽略數字。

由於某種原因,它不起作用-它不會打印任何內容?

<?php
$file_handle = fopen("names.txt", "rb");
while (!feof($file_handle) ) {
  $line_of_text = fgets($file_handle);
  if (!is_numeric((int)$line_of_text)) { 
    echo $line_of_text;
    echo "<br />";
  }
}
fclose($file_handle);
?>

您正在使用(int)強制轉換每一行。 因此,即使是字符串行也將變為0 (零)。

您可以將代碼更改為:

!is_numeric($line_of_text)

注意: is_numeric()對於小數和科學計數法也將返回true 如果您要嚴格確定行中是否包含數字 ,建議使用ctype_digit()

更新

您還需要trim($line_of_text)因為fgets()包括換行符。

while()內部的代碼:

  $line_of_text = trim(fgets($file_handle));
  if (!ctype_digit($line_of_text)) { 
    echo $line_of_text;
    echo "<br />";
  }
!is_numeric((int)$line_of_text)

考慮一下:您正在將行強制轉換為int ,因此無論以前是什么,它都會變成數字。 然后,您要測試它是否不是數字。 當然,它將是數字,因為您是這樣做的。 因此,條件將始終為假。

在測試is_numeric之前,請停止將其轉換為int

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM