PHP数组和Json之间的转换

之所以要用到Json,很多时候是因为使用ajax对象时,程序与JS函数之间的数据交互.因为JS不认识PHP中的数组,PHP也不认识JS中的数组或对象.Json很好的解决了这个问题.

Json简介

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式.它基于JavaScript的一个子集,这意味着JavaScript可以直接读取Json,非常方便.

Json的具体形式是:

1.对象

对象是一个无序的”‘名称/值’对”集合.一个对象以”{“(左括号)开始,”}”(右括号)结束.每个”名称”后跟一个”:”(冒号);”‘名称/值’对”之间使用”,”(逗号)分隔.

例如:

{'username': 'OrangeX','age':21,'sex':'man'} 继续阅读PHP数组和Json之间的转换

安装composer并配置全局变量

服务器环境:Ubuntu16.10
PHP版本 :7.1

因为橘子先前安装的Xampp for Linux,所以在这里直接使用xampp中的PHP了.

Step.0:首先需要将Xampp for Linux中的PHP添加到全局变量

添加变量至PATH:

sudo vi /etc/environment

在PATH=”******”中添加

:/opt/lampp/bin

不要忘记前面的”:”

然后执行 继续阅读安装composer并配置全局变量

php中序列化与反序列化

把复杂的数据类型压缩到一个字符串中
serialize() 把变量和它们的值编码成文本形式
unserialize() 恢复原先变量
eg:

$stooges = array(‘Moe’,’Larry’,’Curly’);
$new = serialize($stooges);
print_r($new);echo “<br />”;
print_r(unserialize($new));

结果:a:3:{i:0;s:3:”Moe”;i:1;s:5:”Larry”;i:2;s:5:”Curly”;}

Array ( [0] => Moe [1] => Larry [2] => Curly )

当把这些序列化的数据放在URL中在页面之间会传递时,需要对这些数据调用urlencode(),以确保在其中的URL元字符进行处理:

$shopping = array(‘Poppy seed bagel’ => 2,’Plain Bagel’ =>1,’Lox’ =>4);
echo ‘next‘;

margic_quotes_gpc和magic_quotes_runtime配置项的设置会影响传递到unserialize()中的数据。
如果magic_quotes_gpc项是启用的,那么在URL、POST变量以及cookies中传递的数据在反序列化之前必须用stripslashes()进行处理:

$new_cart = unserialize(stripslashes($cart)); //如果magic_quotes_gpc开启
$new_cart = unserialize($cart);

如果magic_quotes_runtime是启用的,那么在向文件中写入序列化的数据之前必须用addslashes()进行处理,而在读取它们之前则必须用stripslashes()进行处理:

$fp = fopen(‘/tmp/cart’,’w’);
fputs($fp,addslashes(serialize($a)));
fclose($fp);
//如果magic_quotes_runtime开启
$new_cat = unserialize(stripslashes(file_get_contents(‘/tmp/cart’)));
//如果magic_quotes_runtime关闭
$new_cat = unserialize(file_get_contents(‘/tmp/cart’));

在启用了magic_quotes_runtime的情况下,从数据库中读取序列化的数据也必须经过stripslashes()的处理,保存到数据库中的序列化数据必须要经过addslashes()的处理,以便能够适当地存储。

mysql_query(“insert into cart(id,data) values(1,'”.addslashes(serialize($cart)).”‘)”);
$rs = mysql_query(‘select data from cart where id=1’);
$ob = mysql_fetch_object($rs);
//如果magic_quotes_runtime开启
$new_cart = unserialize(stripslashes($ob->data));
//如果magic_quotes_runtime关闭
$new_cart = unserialize($ob->data);

当对一个对象进行反序列化操作时,PHP会自动地调用其__wakeUp()方法。这样就使得对象能够重新建立起序列化时未能保留的各种状态。例如:数据库连接等。

文章转自《CNBlogs