这里有新鲜出炉的 PHP 面向对象编程,程序狗速度看过来!
PHP(外文名: Hypertext Preprocessor,中文名:"超文本预处理器")是一种通用开源脚本语言。语法吸收了 C 语言、Java 和 Perl 的特点,入门门槛较低,易于学习,使用广泛,主要适用于 web 开发领域。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 的数据,但发现在打印列表数据时,总是包含 经纬度为空的数据。
研究了好久,才发现经纬度字段是字符类型,当字段为空时进行
判断时,PHP 进行自动转换,所以
- $row['y']== 0
判断在空字符的情况下是正确的。于是总是包含经纬度为空的数据。那么怎么去掉经纬度为空的数据呢?
- $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
该函数就是将正则匹配的结果作为匿名函数的参数,返回的结果作为替换的结果。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对 PHPERZ 的支持。
来源: http://www.phperz.com/article/17/0804/341746.html