Js中的数组函数和php中数组函数的对比

1
2
3
4
// js
var arr=[1,2,'hello','world'];
// php
$arr = [1,2,'hello','world'];
JavaScriptPHP含义返回值用法备注
lengthcount()或者sizeof()数组长度-arr.length; count($arr);sizeof()是count()的别名
indexOf()array_search()指定元素的索引成功返回第一个键名(或索引),失败分别返回-1 和 falsearr.indexOf(1); array_search(1,$arr);返回值
slice()array_slice()数组截取返回截取的部分arr.slice(0,2); array_slice($arr,0,2);前者两个参数都是索引(不包括结束索引),后者第三个参数表示长度
push()array_push()从尾部压入(入栈)返回新数组长度(改变原数组)arr.push('A') array_push($arr,'A')-
pop()array_pop()弹出数组最后一个(出栈)返回弹出的值(改变原数组)arr.pop() array_pop($arr)-
unshift()array_unshift()从头压入数据返回新数组长度(改变原数组)arr.unshift() array_unshift($arr,'A')-
shift()array_shift()弹出数组第一个元素返回弹出的值(改变原数组)arr.shift() array_shift($arr)-
sort()sort()排序后者返回值为boolarr.sort() sort($arr)-
reverse()array_reverse()数组反转前者改变原数组,后者返回翻转后数组arr.reverse() array_reverse($arr)-
splice()array_splice()替换指定部分为指定的值返回被删除的元素(改变原数组)arr.splice(1,2,'A','B') array_splice($arr,1,2,['A','B'])写法不太一样,后者要替换的是写个数组,前者分开写元素
concat()array_merge()数组合并返回合并后的数组arr.concat([1,2,3]) array_merge($arr,[1,2,3])存在相同字符串键名,后者覆盖前者
join()implode()数组转字符串字符串arr.join('-') implode('-',$arr)

在js中貌似没有关联数组一说,对象就是关联数组(但其实,array本身也是对象)。js对象中 键值对的声明为 : ,跟php中的=>不一,并且键的名称(其实就是对象的属性)也不需要用引号来包含,除非这个键包含了特殊符号,比如(var xiaohong = {name: '小红','middle-school': 'No.1 Middle School'};),包含特殊符号的属性,也只能用关联数组的形式来访问,比如xiaohog['middle-school']

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
1. 一开始以为有关联数组所以这种写法是错的
var a['name'] = 'aaa';
var a['age'] = 12;
console.log(a['name']);
// 报错:Uncaught SyntaxError: Unexpected token [
2. 先定义数组再添加元素
var a=[];
a['name'] = 'sdf'
a['age'] =12
console.log(a['name'],a['age'],typeof(a),a.length)
// sdf 12 object 0
// 长度依旧为0