JS数组与PHP数组的对比

一、分类与创建

1:JS的数组都是索引数组,数组是一种特殊的对象,创建数组的方式有两种

//方式一
var arr1 = [‘关羽‘, ‘张飞‘, ‘赵云‘, ‘马超‘, ‘黄忠‘];
//方式二
var arr2 = new Array();
arr2[0] = ‘关羽‘;
arr2[1] = ‘张飞‘;
arr2[2] = ‘赵云‘;
arr2[3] = ‘马超‘;
arr2[4] = ‘黄忠‘;

2:PHP数组分为索引数组和关联数组,创建方式也有两种

//方式一(索引数组)
$arr1 = [‘关羽‘, ‘张飞‘, ‘赵云‘, ‘马超‘, ‘黄忠‘];
//方式二(关联数组)
$arr2 = array(‘一‘=>‘关羽‘, ‘二‘=>‘张飞‘, ‘三‘=>‘赵云‘, ‘四‘=>‘马超‘, ‘五‘=>‘黄忠‘);

二、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"}

原文地址:https://www.cnblogs.com/splendid/p/9742656.html

时间: 2024-08-02 12:55:03

JS数组与PHP数组的对比的相关文章

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

原文地址 在使用js编程的时候,常常会用到集合对象,集合对象其实是一种泛型,在js中没有明确的规定其内元素的类型,但在强类型语言譬如Java中泛型强制要求指定类型. ES6引入了iterable类型,Array,Map,Set都属于iterable类型,它们可以使用for...of循环来遍历,都内置forEach方法. 数组 遍历 普通遍历 最简单的一种,也是使用频率最高的一种. let arr = ['a', 'b', 'c', 'd', 'e'] for (let i = 0; i < ar

JS的二维数组

今天,记录一下JS的二位数组,并附上例题. 一.二维数组的本质:数组中的元素又是数组. 其实,我们都见过这样的二维数组,只不过没在意罢了,例如: var arr = [[1,2,4,6],[2,4,7,8],[8,9,10,11],[9,12,13,15]] //这就是一个二位数组arr[2][3]; // 11 注意:表示第三列第4行所在的元素.角标从0开始 二.下面介绍二维数组的初始化 记住了二维数组的本质,初始化也难不倒我们了.看一下实例 实例一: var arr = [[1,2],[a,

js 的数组怎么push一个对象. Js数组的操作push,pop,shift,unshift JavaScript使用push方法添加一个元素到数组末 JavaScript数组函数unshift、shift、pop、push使用

push()函数用于向当前数组的添加一个或多个元素,并返回新的数组长度.新的元素将会依次添加到数组的末尾. 该函数属于Array对象,所有主流浏览器均支持该函数. 语法 array.push( item1 [,items... ] )参数 参数 描述item1 任意类型添加到当前数组末尾处的元素.items 可选参数/任意类型要添加到当前数组末尾处的其他项,可以有多个.注意:如果添加的元素类型为数组类型(Array),仍然会被当作一个元素看待,只是这个元素是数组类型而已.如果要合并两个数组,请使

js连接多个数组并删除重复的元素

js连接多个数组并删除重复的元素:在实际应用中,可能需要将多个数组合并到一个数组中去,并且删除数组中重复的元素.代码实例如下: var a=["antzone","蚂蚁部落","市南区"], b=["新锐科技","蚂蚁部落","努力奋斗"], c=[2,"新锐科技","js教程"], _a=a.concat(b).concat(c), _hash=

js 如何动态添加数组_百度知道

1.数组的创建var arrayObj = new Array(); //创建一个数组var arrayObj = new Array([size]); //创建一个数组并指定长度,注意不是上限,是长度var arrayObj = new Array([element0[, element1[, ...[, elementN]]]]); 创建一个数组并赋值 要说明的是,虽然第二种方法创建数组指定了长度,但实际上所有情况下数组都是变长的,也就是说即使指定了长度为5,仍然可以将元素存储在规定长度以外

js之二维数组定义和初始化三种方法

方法一:直接定义并且初始化,这种遇到数量少的情况可以用 var _TheArray = [["0-1","0-2"],["1-1","1-2"],["2-1","2-2"]] 方法二:未知长度的二维数组 var tArray = new Array();   //先声明一维 for(var k=0;k<i;k++){        //一维长度为i,i为变量,可以根据实际情况改变

js如何移除数组中指定索引的项

js如何移除数组中指定索引的项:在Array对象中有给定的函数可以删除数组中指定的元素,虽然非常好用,但是总感觉看不到摸不着的比较别扭,下面就分享一个自定义的删除数组指定索引值元素的函数,希望给大家一个全新的思路.代码实例如下: var array=[]; array[0]="蚂蚁部落一"; array[1]="蚂蚁部落二"; array[2]="蚂蚁部落三"; array[3]="蚂蚁部落四"; array[4]="

探讨JS合并两个数组的方法

我们在项目过程中,有时候会遇到需要将两个数组合并成为一个的情况. 比如: 1 2 var a = [1,2,3]; var b = [4,5,6]; 有两个数组a.b,需求是将两个数组合并成一个.方法如下: 1.concat js的Array对象提供了一个叫concat()方法,连接两个或更多的数组,并返回结果. 1 var c = a.concat(b);//c=[1,2,3,4,5,6] 这里有一个问题,concat方法连接a.b两个数组后,a.b两个数组的数据不变,同时会返回一个新的数组.

JS求多个数组的重复数据

今天朋友问了我这个问题:JS求多个数组的重复数据 注: 1.更准确的说是只要多个数组中有两个以上的重复数据,那么这个数据就是我需要的 2.单个数组内的数据不存在重复值(当然如果有的话,你可以去重) 3.耗时问题,这一点很重要 源代码: 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>获取多个数组中