php中空文字列と0の関係を詳しく説明します。


前言
最近は経緯度に関する問題を処理する際に、表を作る際に、経度、緯度を文字列varharで記憶することを選択します。後の問題のために伏線を張る。以下は多く話しません。詳しく紹介してみます。

$_x=$row["x"];
$_y=$row["y"];
if(isset($_x) && isset($_y)){
 if($row["y"] == 0 || $row["x"] == 0){
  $d=$this->getDistance($row["y"],$row["x"],$y,$x);
 }elseif(!empty($row["y"]) && !empty($row["x"])){
  $d=$this->getDistance($row["y"],$row["x"],$y,$x);
 }else{
  continue;
 }
 if($d < $radius){
  $list[]= $data[$key];
 }
}
実は私は経緯度が空のデータをフィルタして経度または緯度が0のデータを残したいのですが、リストデータを印刷する時はいつも経緯度が空のデータが含まれています。
長い間調べてみたが、経緯度フィールドは文字の種類で、フィールドが空の場合に行われることがわかった。  $row['y']== 0 は、PHPが自動変換されたと判断したので、$row['y']== 0は、空の文字の場合は正しいと判断した。従って常に経緯度が空のデータが含まれている。経緯度が空のデータはどうやって消しますか?
実は簡単です。

if(isset($_x) && isset($_y)){
 if($row["y"] == "0" || $row["x"] == "0"){
  $d=$this->getDistance($row["y"],$row["x"],$y,$x);
直ちに経緯度が空のデータをフィルタします。
以下はpreg_ですreplace.calbackでコード解説を行います。

$str="sdjfksdf2345";
$str=preg_replace_callback ( '/\d{4}/', function ($match){
 return $match[0]."ff";
}, $str );
echo $str;
exit;
コード実行結果は

sdjfksdf2345ff
この関数は、正則整合の結果を匿名関数のパラメータとして返した結果を置換結果とします。
締め括りをつける
以上はこの文章の全部の内容です。本文の内容は皆さんの学習や仕事に一定の助けをもたらすことを望んでいます。もし疑問があれば、メッセージを残して交流してください。ありがとうございます。