PHP is_numeric 不适用于数组值

标签 php arrays csv

我正在尝试跳过 CSV 文件中的前几行。在其余行中,第一列是序数 - 1、2、3 等。但由于某种原因,使用 is_numeric 完全失败。我认为这可能是引号,但手册中的测试数组有引号,并且它正确地打印出答案。

打开并检查 $afile 后...

    while (($row = fgetcsv($afile)) !== FALSE) {
        // first three rows don't have numbers in first column
        if (is_numeric($row[0]))
            print "<tr><td>{$row[7]}</td></tr>";
        else
           print "not numeric: {$row[0]}<br/>";
   }

一切都显示为“非数字”!

当我 print_r 数组时,列中仍然有引号,因此我尝试运行 str_replace 来删除引号,并且 is_numeric still 始终显示为 false...

完全困惑,希望有人能帮忙,我希望这只是一个愚蠢的“午夜编码”问题......

[已编辑]

好吧,我怀疑数据有问题,但我看不出有什么问题。当我在 BBEdit 中“显示不可见内容”时,我在每个字符之间看到一个颠倒的问号。请参阅:

Image

所以..这很奇怪。假设我会一直获取这些不可见的数据,直到我能够找出导出的数据.. PHP 可以做任何事情来清理数据吗?也许是字符集问题?

[再次编辑]感谢 martinstoeckli,我使用 mb_convert_string 转换了数据,is_numeric 现在可以正确返回。

最佳答案

is_numeric 的一个非常简单的替代方法是检查您是否正在检查 int is:

if ($row[0] == (string)(int)($row[0]))

或者,如果您担心尾随空格的可能性,请检查 strlen($row[0]) == strlen((int)$row[0])

关于PHP is_numeric 不适用于数组值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12472111/

相关文章:

c - 我不知道如何使用libcs​​v中某些函数的参数

python - 在 Python 中创建多个 CSV 工作表

php - 使用 php mysql 时出错未终止的字符串文字?

php - 等价于纯 PHP 中的 $request->path()

php - 如何循环显示视频播放器

php - 数据库php脚本,将数据插入表中

Java for 循环中的数组

c - 试图理解 Knuth 的排列算法

javascript - 循环和函数

sql - VB6 将字符串映射到标题的整数