程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> 詳解php中空字符串和0之間的關系,詳解php中空字符串

詳解php中空字符串和0之間的關系,詳解php中空字符串

編輯:關於PHP編程

詳解php中空字符串和0之間的關系,詳解php中空字符串


前言

最近在處理關於經緯度的問題時,在建表的時候,選擇用字符串varchar存儲經度、緯度。為以後的問題埋下伏筆。下面話不多說,我們來看看詳細的介紹。

$_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_callback進行代碼講解

$str="sdjfksdf2345";
$str=preg_replace_callback ( '/\d{4}/', function ($match){
 return $match[0]."ff";
}, $str );
echo $str;
exit;

代碼運行結果為

sdjfksdf2345ff

該函數就是將正則匹配的結果作為匿名函數的參數,返回的結果作為替換的結果。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對幫客之家的支持。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved