PHP传值和传引用

2019-04-02    |   技术   |   370 views

传值
       把实参的值赋值给行参,相当于copy,系统将为目标对象重新开辟一个完全相同的内存空间
       对行参的修改不会影响实参

传引用
       真正以地址的方式传递参数,将对象在内存中的地址传递给目标对象,相当于目标对象和原始对象对应同一个内存存储空间,如果对目标对象修改,内存中的数据也会改变
       传递以后,行参和实参都是同一个对象,行参的修改会影响实参的值

PHP流(Stream)

2019-03-26    |   技术   |   456 views

一.解析
       流的作用是提供统一的公共函数来处理文件、网络和数据压缩等操作。简单而言,
流是具有流式行为的资源对象。流可以线性读写,并且可以通过fseek()之类的函数
定位到流中的任何位置。简化一点,其实流的作用是在出发地和目的地之间传输数
据。出发地和目的地可以是文件、命令行进程、网络连接、zip或tar压缩文件、临时
内存、标准输入输出,或者是通过PHP流封装协议实现的任何其他资源。

阅读全文 »

PHP var_export

2019-02-16    |   技术   |   447 views

var_export — 输出或返回一个变量的字符串表示

var_export ( mixed $expression [, bool $return ] ) : mixed

此函数返回关于传递给该函数的变量的结构信息,它和 var_dump() 类似,不同的是其返回的表示是合法的 PHP 代码。可以通过将函数的第二个参数设置为 TRUE,从而返回变量的表示。

这里要注意的是,如果var_export第二个参数不为TRUE时,程序会直接输出var_export的内容,此时类似var_dump和echo。

解决MySQL存储json_encode中文格式问题

2018-04-01    |   技术   |   1103 views

一、问题分析

数据存储到数据库时,MySQL不会存储Unicode字符,json_encode中文的时候,会把每一个中文字符encode为"\uxxxx"的形式,但是当存储到数据库的时候,"\"字符会被过滤掉,真正存储到数据库的是"uxxxx"这一段。然后你从数据库读取数据的时候,只能读到"uxxxx"这个数据,这样的话,你就无法正确地解析中文了。

阅读全文 »

我们经常会遇到要从MySQL导出长数字的状况,例如导出身份证号、订单号等等。而导出后在Excel中打开后却是用科学计数法显示的,过长的话,后面几位数字全都转换为0了,这跟我们想要的结果完全不一样了。那为什么会这样呢?这是由Excel的特性决定的:Excel显示11位以上的数字时,会自动转化为科学计数法,如果长度大于15位,15位以后数字还会转成0。

当然,这种情况是完全可以避免的,解决方法就是在长数字前加入tab字符:

CONCAT("\t", string)

其中\t是制表符的转义符,这样导出来的csv文件中的长字符就可以原样显示,不会被转为为科学计数法了。