JS数组与PHP数组的对比
一、分类与创建
1:JS的数组都是索引数组,数组是一种特殊的对象,创建数组的方式有两种
//方式一
var arr1 = ['关羽', '张飞', '赵云', '马超', '黄忠'];
//方式二
var arr2 = new Array();
arr2[0] = '关羽';
arr2[1] = '张飞';
arr2[2] = '赵云';
arr2[3] = '马超';
arr2[4] = '黄忠';
//方式三
var arr3 = new Array('关羽', '张飞', '赵云', '马超', '黄忠');
js数组只能通过'[]'访问属性。
2:PHP数组分为索引数组和关联数组,创建方式也有两种
//方式一(索引数组)
$arr1 = ['关羽', '张飞', '赵云', '马超', '黄忠'];
//方式二(关联数组)
$arr2 = array('一'=>'关羽', '二'=>'张飞', '三'=>'赵云', '四'=>'马超', '五'=>'黄忠');
php能通过'[]'和'{}'访问。
二、JS数组赋值是引用传递,而PHP赋值的是一个副本
var arr1 = ['关羽', '张飞', '赵云', '马超', '黄忠'];
var arr2 = ['关羽', '张飞', '赵云', '马超', '黄忠'];
alert(arr1 == arr2); //输出false
$arr1 = array('关羽', '张飞', '赵云', '马超', '黄忠');
$arr2 = array('关羽', '张飞', '赵云', '马超', '黄忠');
echo $arr1 === $arr2; //输出1
JS 对象常称为引用类型,对象的比较均是引用的比较 ,当它们引用同一基对象时,才相等,而php除了 object 外,
其他类型变量大多在赋值、参数传递、返回值中得到都是它的副本, 很少使用按址传递(引用传递),如下:
$arr1 = array('关羽', '张飞', '赵云', '马超', '黄忠');
$arr2 = &$arr1; //引用传递
$arr1[5] = '魏延';
echo $arr1 === $arr2; //仍然输出1,$arr2随$arr1改变
三、由于JS不支持关联数组,所以PHP中json_encode()只将索引数组转为数组格式,而将关联数组转为对象格式。
$arr1 = array('one', 'two', 'three', 'four', 'five');
echo json_encode($arr1); //索引数组转换为数组格式["one","two","three","four","five"]
$arr2 = array('1'=>'one', '2'=>'two', '3'=>'three', '4'=>'four', '5'=>'five');
echo json_encode($arr2); //关联数组转换为对象格式 {"1":"one","2":"two","3":"three","4":"four","5":"five"}
JS数组与PHP数组的对比的更多相关文章
- js面试题之数组去重对比
最近看一些面试题,很多都提到了数组去重,用的最多的不外乎就是下面这个例子 arr.filter(function(value,index,arr){ return arr.indexOf(value, ...
- JS中集合对象(Array、Map、Set)及类数组对象的使用与对比
原文地址 在使用js编程的时候,常常会用到集合对象,集合对象其实是一种泛型,在js中没有明确的规定其内元素的类型,但在强类型语言譬如Java中泛型强制要求指定类型. ES6引入了iterable类型, ...
- JS中集合对象(Array、Map、Set)及类数组对象的使用与对比(转载)
在使用js编程的时候,常常会用到集合对象,集合对象其实是一种泛型,在js中没有明确的规定其内元素的类型,但在强类型语言譬如Java中泛型强制要求指定类型. ES6引入了iterable类型,Array ...
- js 日期时间排序 数组
不多说直接show代码 var timeArr=[ {'id':'A01','date':'2016-04-20 23:22:11'}, {'id':'A02','date':'2016-04-21 ...
- js判断是否为数组
js判断是否为数组类型 CreateTime--2018年5月18日14:38:58 Author:Marydon 1.错误方式 使用typeof 返回的是object 2.正确方式 方式一:使用 ...
- JS 索引数组、关联数组和静态数组、动态数组
JS 索引数组.关联数组和静态数组.动态数组 数组分类: 1.从数组的下标分为索引数组.关联数组 var ary1 = [1,3,5,8]; //按索引去取数组元素,从0开始(当然某些语言实现从1开始 ...
- js构造函数,索引数组和属性的属性
本文主要介绍和小结js的构造函数,关联数组的实现方式和使用,及不可变对象和它的实现方式及他们使用过程中要注意的点 <script> function p(){ var len=argume ...
- js获取对象、数组的实际长度,元素实际个数
/*获取对象.数组的长度.元素个数 *@param obj 要计算长度的元素,可以为object.array.string */ function count(obj){ var objType = ...
- js中对arry数组的各种操作小结
最近工作比较轻松,于是就花时间从头到尾的对js进行了详细的学习和复习,在看书的过程中,发现自己平时在做项目的过程中有很多地方想得不过全面,写的不够合理,所以说啊,为了在以后的工作中写出最优化的代码,我 ...
随机推荐
- HttpClient使用
1.HttpClient 是 Apache Jakarta Common 下的子项目,可以用来提供高效的.最新的.功能丰富的支持 HTTP 协议的客户端编程工具包 2.主要的功能 (1)实现了所有 H ...
- docker centos:last 开启sshd 遇到的证书问题
启动sshd: # /usr/sbin/sshd 一.问题描述 这时报以下错误: [root@ xxx/]# /usr/sbin/sshd Could not load host key: /etc/ ...
- 漂亮的SVG时钟
漂亮的SVG时钟 效果图: 代码如下,复制即可使用: <!DOCTYPE html> <html lang="en"> <head> <m ...
- Unix IPC之读写锁
linux中读写锁的rwlock介绍 读写锁比mutex有更高的适用性,可以多个线程同时占用读模式的读写锁,但是只能一个线程占用写模式的读写锁: 1,当读写锁是写加锁状态时, 在这个锁被解锁之前, 所 ...
- Kubernetes Ingress实战
本节内容: 服务发现与负载均衡 Ingress实战 一.服务发现与负载均衡 在前面的安装部署kubernetes集群中已经简单用示例来演示了Pod和Service,Kubernetes通过Servic ...
- Java第三阶段学习(三、字符流、转换流)
一.字节流读取中文时出现的问题: 文件中有中文时,用字节流读取会出现乱码的问题,因为一个中文为两个字节. 二.字符编码表 编码表:其实就是生活中字符和计算机二进制的对应关系表. 1.ascii: 一个 ...
- ASP.NET MVC5+ 路由特性
概述 ASP.NET MVC 5支持一种新的路由协议,称为路由特性. MVC5也支持以前定义路由的方式,你可以在一个项目中混合使用这两种方式来定义路由. 案例 1.使用Visual Studio 20 ...
- Dijkstra-傻子也能看懂的迪杰斯特拉算法(转)
本周来来介绍指定一个点(源点)到其余各个顶点的最短路径,也叫做“单源最短路径”.例如求下图中的1号顶点到2.3.4.5.6号顶点的最短路径. 与Floyd-Warshall算法一样 ...
- CODEVS 4655 序列终结者-splay(区间更新、区间翻转、区间最值)
4655 序列终结者 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 大师 Master 题解 题目描述 Description 网上有许多题,就是给定一个序列,要 ...
- 洛谷P2707 Facer帮父亲 [优先队列,数学]
题目传送门 Facer帮父亲 题目背景 Facer可是一个孝顺的孩纸呦 题目描述 Facer的父亲是一名经理,现在总是垂头丧气的. Facer问父亲,怎么啦?父亲说,公司出了点问题啊. 公司管理着N个 ...