一、分类与创建

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数组的对比的更多相关文章

  1. js面试题之数组去重对比

    最近看一些面试题,很多都提到了数组去重,用的最多的不外乎就是下面这个例子 arr.filter(function(value,index,arr){ return arr.indexOf(value, ...

  2. JS中集合对象(Array、Map、Set)及类数组对象的使用与对比

    原文地址 在使用js编程的时候,常常会用到集合对象,集合对象其实是一种泛型,在js中没有明确的规定其内元素的类型,但在强类型语言譬如Java中泛型强制要求指定类型. ES6引入了iterable类型, ...

  3. JS中集合对象(Array、Map、Set)及类数组对象的使用与对比(转载)

    在使用js编程的时候,常常会用到集合对象,集合对象其实是一种泛型,在js中没有明确的规定其内元素的类型,但在强类型语言譬如Java中泛型强制要求指定类型. ES6引入了iterable类型,Array ...

  4. js 日期时间排序 数组

    不多说直接show代码 var timeArr=[ {'id':'A01','date':'2016-04-20 23:22:11'}, {'id':'A02','date':'2016-04-21 ...

  5. js判断是否为数组

      js判断是否为数组类型 CreateTime--2018年5月18日14:38:58 Author:Marydon 1.错误方式 使用typeof 返回的是object 2.正确方式 方式一:使用 ...

  6. JS 索引数组、关联数组和静态数组、动态数组

    JS 索引数组.关联数组和静态数组.动态数组 数组分类: 1.从数组的下标分为索引数组.关联数组 var ary1 = [1,3,5,8]; //按索引去取数组元素,从0开始(当然某些语言实现从1开始 ...

  7. js构造函数,索引数组和属性的属性

    本文主要介绍和小结js的构造函数,关联数组的实现方式和使用,及不可变对象和它的实现方式及他们使用过程中要注意的点 <script> function p(){ var len=argume ...

  8. js获取对象、数组的实际长度,元素实际个数

    /*获取对象.数组的长度.元素个数 *@param obj 要计算长度的元素,可以为object.array.string */ function count(obj){ var objType = ...

  9. js中对arry数组的各种操作小结

    最近工作比较轻松,于是就花时间从头到尾的对js进行了详细的学习和复习,在看书的过程中,发现自己平时在做项目的过程中有很多地方想得不过全面,写的不够合理,所以说啊,为了在以后的工作中写出最优化的代码,我 ...

随机推荐

  1. java基础47 装饰着模式设计

    1.装饰者模式 增强一个类的功能,而且还可以让这些装饰类相互装饰 2.装饰者设计模式的步骤 1.在装饰类的内部维护一个被装饰类的引用    2.让装饰者有一个共同的父类或者父接口 3.实例 packa ...

  2. CF614A 【Link/Cut Tree】

    题意:求出所有w^i使得l<=w^i<=r 输入为一行,有三个数,分别是l,r,w.意义如题目所描述 输出为一行,输出所有满足条件的数字,每两个数字中间有一个空格 如果没有满足条件的数字则 ...

  3. Linux学习笔记:rm删除文件和文件夹

    使用rm命令删除一个文件或者目录 使用rmdir可以删除空文件夹 参数: -i:删除前逐一询问确认 -f:即使原档案属性设为唯读,亦直接删除,无需逐一确认 -r:递归 删除文件可以直接使用rm命令,若 ...

  4. MySQL学习笔记:删除存储过程和函数

    删除存储过程.存储函数主要使用drop语句: drop procedure  —— 删除存储过程 drop function  —— 删除存储函数 语法: DROP {PROCEDURE|FUNCTI ...

  5. 【读书笔记】Android平台的漏洞挖掘和分析

    最近比较关注移动端的安全,以后也打算向安卓平台的安全发展.这篇博文主要是记录一些研究Android安全的读书笔记. Fuzzing技术的核心是样本生成技术 测试Android平台的组件间通信功能使用的 ...

  6. 利用Metrics+influxdb+grafana构建监控平台

    https://blog.csdn.net/fishmai/article/details/51817429

  7. MySQL5.6 Waiting for Commit Lock

    mysql  Bug#19843808 自动修复记录 MySQL5.6和Xtrabackup之间存在一个bug,这个bug在5.6.23中已经修复. Xtrabackup备份的时候执行flushs t ...

  8. HBase(五)HBase的API操作

    一.项目环境搭建 新建 Maven Project,新建项目后在 pom.xml 中添加依赖: <dependency> <groupId>org.apache.hbase&l ...

  9. ubuntu16.04 删除内核

    一.背景 今天开机输入密码后,Ubuntu就卡在左下角有“Ubuntu 16.04 LTS”字样的那个界面,鼠标可以移动,但无法进入桌面.考虑到这个问题可能是因为ubuntu的自动更新造成的,于是重新 ...

  10. Ionic Js十八:滑动框

    ion-slide-box 滑动框是一个包含多页容器的组件,每页滑动或拖动切换: 效果图如下:   用法 <ion-slide-box on-slide-changed="slid ...