![](/img/trans.png)
[英]Why does is_numeric() return false when passed a seemingly numeric string?
[英]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.