1、json字符串转json对象

$data='[{"user_id":"93","price":"52.50"},{"user_id":"93","price":"52.50"},{"user_id":"93","price":"52.50"}]';
$jsonObj = json_decode($data,true);
var_dump($jsonObj);

输出如下:

array (size=3)
0 =>
array (size=2)
'user_id' => string '93' (length=2)
'price' => string '52.50' (length=5)
1 =>
array (size=2)
'user_id' => string '93' (length=2)
'price' => string '52.50' (length=5)
2 =>
array (size=2)
'user_id' => string '93' (length=2)
'price' => string '52.50' (length=5)

这种输出方法与下面的一样:

 $sql = "SELECT * " ."FROM goods WHERE is_hot = 1";
$row = $GLOBALS['db']->getAll($sql);
var_dump($row);

输出如下:

array (size=10)
0 =>
array (size=52)
'goods_id' => string '1089' (length=4)
'cat_id' => string '310' (length=3)
'goods_sn' => string 'ECS001201' (length=9)
'goods_name' => string '喇叭袖中长上衣夏季短袖T恤打底裙' (length=86) 1 =>
array (size=52)
'goods_id' => string '1099' (length=4)
'cat_id' => string '336' (length=3)
'goods_sn' => string 'ESCOO1105' (length=9)
'goods_name' => string '榄油菜籽油玉米植物调和油商超同款' (length=86) 2 =>
array (size=52)
'goods_id' => string '1110' (length=4)
'cat_id' => string '336' (length=3)
'goods_sn' => string 'ECS001110' (length=9)
'goods_name' => string '自榨菜油5l食用油非转基因粮油' (length=88)

 2、怎样保存JSON字符串?怎样添加或删除一个JSON字符串

//定义一个数组
$allowArr=array();
//把从数据库库中获取的[{"user_id":"93","user_name":"james","price":"88"},{"user_id":"293","user_name":"139335","price":"52.50"}]字符串转换为数组对象
$allowMemberArr=json_decode($allowMember); //这里注意如果使用的是$allowMemberArr=json_decode($allowMember,true);遍历取值的时候要用$row['user_id'],而不是$row->user_id
//遍历并添加到数组行
foreach ($allowMemberArr as $key=>$row) {
$allowArr[] = array('user_id' => $row->user_id, 'user_name' => $row->user_name, 'price' => $row->price);
}
//添加一个数组行
$allowArr[]=array('user_id'=>$user_id,'user_name'=>$user_name,'price'=>$price);
//把所有已经添加的数组行转换为JSON字符串,然后就可以保存了(JSON_UNESCAPED_UNICODE 防止中文乱码)
$jsonString =json_encode($allowArr,JSON_UNESCAPED_UNICODE);

删除其中一个数组行也可以用遍历判断进行去除

$allowArr=array();
$allowMemberArr=json_decode($allowMember);
foreach ($allowMemberArr as $key=>$row){
if($row->user_id!=$userId){
$allowArr[]=array('user_id'=>$row->user_id,'user_name'=>$row->user_name,'price'=>$row->price);
}
}

 3、在数组中判断某个值是否存在

in_array(value,array,type)

该函数的作用是在数组array中搜索指定的value值,type是可选参数,如果设置该参数为 true ,则检查搜索的数据与数组的值的类型是否相同,即恒等于(区分大小写)。


//如果按JSON来说,解决的形如:["Peter", "Joe", "Glenn", "Cleveland"]方式
$people = array("Peter", "Joe", "Glenn", "Cleveland");
if(in_array("Glenn",$people)){
  echo "Match found";
}else{
  echo "Match not found";
} 输出:
Match found
//与下面这种方式是一样的,如:$arrStr='["20","60","55"]';这种类型的字符串,如果用它进行比较需要转换为数组:$arr=$json->decode($_GET['ids']);这种方法可以解决如:go.php?act=drop_group_users&ids=["287","294","302"]
if(in_array("60",$arr)){
  echo "Match found";
}else{
  echo "Match not found";
}

array_key_exists(key,array)

该函数是判断某个数组array中是否存在指定的 key,如果该 key 存在,则返回 true,否则返回 false。

提示:请记住,如果您指定数组的时候省略了键名,将会生成从 0 开始并且每个键值对应以 1 递增的整数键名

//如果按JSON来说,解决的形如:{"a":"Dog","b":“Cat"}方式
$a=array("a"=>"Dog","b"=>"Cat");
if(array_key_exists("a",$a)){
echo "Key exists!";
}else{
echo "Key does not exist!";
} 输出: Key exists!

array_search(value,array,strict)

array_search() 函数与 in_array() 一样,在数组中查找一个键值。如果找到了该值,则返回匹配该元素所对应的键名。如果没找到,则返回 false。注意在 PHP 4.2.0 之前,函数在失败时返回 null 而不是 false。同样如果第三个参数 strict 被指定为 true,则只有在数据类型和值都一致时才返回相应元素的键名。

$a=array("a"=>"Dog","b"=>"Cat","c"=>5,"d"=>"5");
echo array_search("Dog",$a);
echo array_search("5",$a);

输出:
ad

PHP中一些常用知识点的更多相关文章

  1. 前端笔试面试中的常用知识点总结(CSS)

    1.CSS选择器的优先级!important  > 内联 > id选择器 > 类选择器 > 标签选择器多个类选择器叠加(256)之后的优先级大于一个id选择器!importan ...

  2. Production环境中iptables常用参数配置

    production环境中iptables常用参数配置 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 我相信在实际生产环境中有很多运维的兄弟跟我一样,很少用到iptables的这个 ...

  3. PHP面向对象中的重要知识点(三)

    1. namespace: 和C++中的名字空间很像,作用也一样,都是为了避免在引用较多第三方库时而带来的名字冲突问题.通过名字空间,即便两个class的名称相同,但是因为位于不同的名字空间内,他们仍 ...

  4. DB2_SQL_常用知识点&实践

    DB2_SQL_常用知识点&实践 一.删除表中的数据(delete或truncate) 1 truncate table T_USER immediate; 说明:Truncate是一个能够快 ...

  5. JAVA常用知识点及面试题总结

    1. String.StringBuffer.StringBuilder三者区别? (1)三者在执行速率上的比较: String<StringBuffer<StringBuilder 原因 ...

  6. Less常用知识点

    上篇文章介绍了如何安装Less,我们将所有东西都写在.less里面,最后通过命令将.less转换成.css文件,就可以放入到项目里用了.今天了解一些less常用知识点. 1.变量:声明两个变量,一个是 ...

  7. YII2常用知识点总结

    YII2常用知识点总结 (一)总结性语句 (1)经常看看yii源码比如vendor\yiisoft\yii2\web这个目录(很重要)下的文件中的方法(这些文件中的公共方法,大致看了下基本上都可以通过 ...

  8. CSS3常用知识点

    CSS3常用知识点 1 css3选择器 1.1 属性选择器 /* E[attr~=val] 表示的一个单独的属性值 这个属性值是以空格分隔的*/ .attr2 a[class~="kawa& ...

  9. javaScript常用知识点有哪些

    javaScript常用知识点有哪些 一.总结 一句话总结:int = ~~myVar, // to integer | 是二进制或, x|0 永远等于x:^为异或,同0异1,所以 x^0 还是永远等 ...

随机推荐

  1. 20165235 实验一 Java开发环境的熟悉

    20165235 实验一 Java开发环境的熟悉 课程:JAVA程序设计 姓名:祁瑛 学号:20165235 指导老师:娄嘉鹏 实验日期: 2018.4.2 实验内容:java开发环境的熟悉 一,实验 ...

  2. jquery模拟form表单提交并新打开页面

    /** * form表单提交本页面打开 * @param url * @param params */ function postCurrent(url,params){ var form = $(& ...

  3. linux的文件打包与压缩

    简介 Linux 上常用的压缩/解压工具,介绍了zip.rar.tar的使用. 文件打包和压缩 Linux 上的压缩包文件格式,除了 Windows 最常见的*.zip.*.rar..7z 后缀的压缩 ...

  4. HDU 1710 (二叉树的前序和中序,求后序)

    题目链接 题目大意: 输入二叉树的前序.中序遍历,请输出它的后序遍历 #include <stdio.h> #include <string.h> ; // 长度为n s1 前 ...

  5. Django 学习第八天——Django模型基础第三节

    一.表关系的实现: 一对一:OneToOne(外键+唯一键) xxx = models.OneToOneField('关联的表',on_delete=models.CASCADE) 外键和一对一关系的 ...

  6. mysql(三) 数据表的基本操作操作

    mysql(三) 数据表的基本操作操作 创建表,曾删改查,主键,外键,基本数据类型. 1. 创建表 create table 表名( 列名 类型 是否可以为空, 列名 类型 是否可以为空 )ENGIN ...

  7. 熔断器---Hystrix

    Hystrix:熔断器,容错管理工具,旨在通过熔断机制控制服务和第三方库的节点,从而对延迟和故障提供更强大的容错能力. 说到熔断器,先要引入另外一个词,雪崩效应. 雪崩效应,百度百科的解释是这样的: ...

  8. Touch事件详解及区别,触屏滑动距离计算

    移动端有四个关于触摸的事件,分别是touchstart.touchmove.touchend.touchcancel(比较少用), 它们的触发顺序是touchstart-->touchmove- ...

  9. mysql查询根据时间排序

    表数据: mysql查询根据时间排序,如果有相同时间则只查询出来一个 所以需要再判断,如果时间相同,则根据id进行降序排序

  10. 1099 Lottery

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=1099 英文水平太差了,题目实在是不知道是什么意思,然后看了其他高手写的思路,才看明白. 题意,收集n张彩票 ...