6

特定の番号について in_array を介して検索されている 0845 番号の配列があります。何らかの理由で、針の先頭のゼロを省略すると、誤検知が返されます。

$numbers = array(
  '08451234567',
  '08452345678',
  '08453456789',
  '08454567890',
  ...
);

var_dump(in_array('08451234567', $numbers)); //(Boolean) TRUE - Right
var_dump(in_array('8451234567', $numbers)); //(Boolean) TRUE - Wrong

配列内の値を文字列としてキャストしようとしましたが、うまくいきませんでした。

どうすれば修正できますか?

[編集]

私の針の周りに引用を追加しました

4

3 に答える 3

4

それを引用します。PHP では、引用符なしの 0123 は 8 進数です。それはドキュメントにあります

これは以前にstackoverflowで回答されています。

于 2013-05-07T10:38:09.553 に答える
-1

そうしないと'先頭0が無視され、値が整数に変換されます。

var_dump(in_array('08451234567', $numbers));
var_dump(in_array('8451234567',  $numbers));
于 2013-05-07T10:35:45.460 に答える