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は常にfalseとして表示されます...
完全に困惑しています。誰かが助けてくれることを願っています。それが愚かな「真夜中のコーディング」の問題であることを願っています...
[編集]
データに問題があるのではないかと疑っていましたが、何も問題はありませんでした。BBEdit で「非表示を表示」すると、すべての文字の間に逆さまの疑問符が表示されます。見る:
だから..それは奇妙です。エクスポートされたデータを把握できるようになるまで、これらの目に見えないものを常に取得すると仮定すると.. PHPはデータをきれいにするために何かできますか? 多分文字セットの問題?
[再編集] martinstoeckli のおかげで、データを mb_convert_string で変換すると、is_numeric が正しく返されるようになりました。