全栈工程师看过来,学的计算机语言多了,往往会把不同语言的各个函数搞混。作为一个全栈PHPer,往往PHP、JavaScript 语法傻傻分不清楚,百度一下,查手册要网速。不如收藏下这篇文章,打印出来,贴到一旁快速查阅。
JavaScript 的一些数组map函数有jQuery实现,ES6后,又出了官方实现。PHP 的数组、字符串相关函数的命名随性,这仨一块就更容易混淆了。
编码风格
语言 | PHP | JavaScript |
---|---|---|
换行 | ; 号是必须的,\n 不是必须的 | 换行 \n ,以及 ; 号都不是必须的 |
大小写敏感度 | 只有变量名区分大小写 | 变量名、函数名、类名等 都区分大小写 |
严格模式 | declare(strict_types=1); (PHP7新特性) | "use strict";(ECMAScript 5 引入) |
变量声明
语言 | PHP | JavaScript |
---|---|---|
常量 | const VAR_NAME = 12; define('VAR_NAME', 12); | const MY_FAV = 7; (ES6引入的标准) |
局部变量 | $varName = 12; (PHP只有函数作用域,和全局作用域之分) | function myFunc() { var varName = 3; if (true) { let varName2 = 2; } } (函数作用域内必须用var声明,否则变量全局可访问.) (let修饰的变量就是块级别作用域,ES6引入) |
全局变量 | varName = 12; <br/> function myFunc() {<br/> global varName; } (函数内使用全局变量,必须要用global变量声明使用外部的全局变量) | var varName1 = 3; varName2 = 2; function myFunc() { varName3 = 6; } (这里写法varName1,2,3都是全局变量) |
全局符号表 | $GLOBALS 数组 | window 对象 |
为定义变量 | null | undefined |
变量转换
语言 | PHP | JavaScript |
---|---|---|
转bool,boolean | foo; foo; foo); | boolVal = Boolean('') |
转 int | foo; foo; foo); | intVal = Number("314") intVal = parseInt("3.14") |
转 float | foo; foo; foo; foo); | floatVal = Number("3.14") flotaVal = parseFloat("12") |
转换为 string | foo; foo); | str = String(123) str = (123).toString() |
转换为 array | $arr = (array) new stdClass(); | (需要多行函数完成) |
转换为 对象 | $obj = (object) array('1' => 'foo'); | let arr = ['yellow', 'white', 'black']; let obj = {...arr} |
时间戳转日期 | date->setTimestamp(1171502725); | var date = new Date(1398250549490); |
字符转日期 | dateStr); | var myDateObj = new Date(Date.parse(datetimeStr)) |
转换为 空 | (unset) $var; \ 不会删除该变量或 unset 其值。仅是返回 NULL 值而已 | |
获取类型 | var); | varType = typeof myCar |
类判断 | a instanceof MyClass; | boolRe = a instanceof MyClass new Date().constructor === Date |
运算符
语言 | PHP | JavaScript |
---|---|---|
三目(三元)运算 | a ? a = $a ? : 1;//第二种 PHP5.3支持 | re = isMember ? 2.0 : '$10.00' |
合并运算符 | a ?? 1; // PHP7支持 |
数组
语言 | PHP | JavaScript |
---|---|---|
基本 | array = [ "foo" => "bar", "bar" => "foo"]; // PHP 7语法 | b = [1,2,3] |
追加 | arr[key1] = value1; $arr[key2] = value2; | var mycars=new Array() mycars[0]="Saab" mycars[1]="Volvo" mycars[2]="BMW" |
new | var mycars = new Array("Saab","Volvo","BMW") |
循环
语言 | PHP | JavaScript |
---|---|---|
for 循环 | for (i<=5; i++) <br/> {<br/> echo i ; } | for (var i=0; i < cars.length ; i++) { document.write(cars[i]); } |
foreach ,for in 循环 | x as value) <br/> { <br/> echo value; } | var person= {fname:"John",lname:"Doe",age:25}; for (x in person) // x 为属性名 { txt=txt + person[x]; } |
while 循环 | while(i <= 5) <br/> { <br/> echo i ; $i++; } | while (i<5) { x=x + "The number is " + i + " "; i++; } |
do while 循环 | do { i; } while ($i<=5); | do { document.write(i); i++; } while (i<5); |
数组函数
语言 | PHP | JavaScript |
---|---|---|
获取数组中元素的数目 | count($arr); | arrayObject.length |
拼接两个字符串 | array_merge(arr2); | arr1.concat(arr2) |
删除数组元素 | unset(key]); | delete arr1[key] |
将数组拼接成字符串 | implode(',', $arr1); | arr.join(‘,’) |
删除并返回数组最后元素 | arr1); | re = arrayObject.pop() |
向数组的末尾添加一个元素 | array_push(var1); | len = arrayObject.push(newele1) |
将数组的第一个元素删除并返回 | arr1); | re = arrayObject.shift() |
向数组的开头添加一个或更多元素 | array_unshift(var1); | len = arrayObject.unshift(newele1) |
从已有的数组中返回选定的元素 | arr1,len); | newArr = arrayObject.slice(start,end) |
排序 | sort($arr1); | arrayObject.sort(sortByFunc = null) |
颠倒数组中元素的顺序 | array_reverse(&keepKeys = true); | arrayObject.reverse() |
each 函数 | function map_Spanish(n)<br/>{<br/> echo n; } c = array_map("show_Spanish", $a); | $.each([ 52, 97 ], function( index, value ) { alert( index + ": " + value ); }); jQuery 方式 const items = ['item1', 'item2', 'item3']; items.forEach(function(item, index, arr){ console.log('key:' + index + ' value:' + item); }); (ES6引入) |
回调函数迭代地将数组简化为单一的值 | function sum(item) { item; return carry;<br/>}<br/>a = array(1, 2, 3, 4, 5); var_dump(array_reduce($a, "sum")); // int(15) | var numbers = [65, 44, 12, 4]; function getSum(total, num) { return total + num; } console.log(numbers.reduce(getSum)); 始于ECMAScript 3 |
用回调函数过滤数组中的单元 | function odd(var) {<br/> // returns whether the input integer is odd<br/> return(var & 1); } array1, "odd")); | function isBigEnough(element) { return element >= 10; } var filtered = [12, 5, 8, 130, 44].filter(isBigEnough); \ JavaScript 1.6 引入 |
字符
语言 | PHP | JavaScript |
---|---|---|
创建 | str2 = 'tow string'; | var carname = "Volvo XC60"; var carname = 'Volvo XC60'; (同样的在双引号中可以使用转义字符) |
多行字符 | $bar = <<<EOT foo bar EOT; | var tmpl ='<br/> !!! 5<br/> html<br/> include header<br/> body<br/> include script' |
字符拼接 | str2 | str1 + str2 |
字符串函数
语言 | PHP | JavaScript |
---|---|---|
获取字符长度 | strlen($str); | string.length |
获取子字符串 | substr ( string start [, int $length ] ) : string | string.substr(start,length) str.slice(1,5); |
使用一个字符串分割另一个字符串 | pieces = explode(" ", pieces[0]; // piece1 | var str="How are you doing today?"; var n=str.split(" "); \ output:How,are,you,doing,today? |
去除字符串首尾处的空白字符(或者其他字符) | trim ( string character_mask = " \t\n\r\0\x0B" ] ) : string (PHP 函数的可定制要强一点) | var str = " string "; alert(str.trim()); |
查找字符串首次出现的位置 | pos = strpos($mystring, 'cs'); | var str="Hello world, welcome to the universe."; var n=str.indexOf("welcome"); |
把字符串转换为小写 | strtolower ( string $string ) : string | string.toLowerCase() |
把字符串转换为大写 | strtoupper ( string $string ) : string | string.toUpperCase() |
对象
语言 | PHP | JavaScript |
---|---|---|
空对象 | $obj = new stdClass(); | var obj = new Object(); // 或者 person={firstname:"John",lastname:"Doe",age:50,eyecolor:"blue"}; |
对象属性 | obj->a = 12; | var myCar = new Object(); myCar.year = 1969; // js还可以以数组形式 myCar["year"] = 1969; |
删除属性 | unset($obj->a); | delete object.property delete object['property'] |
正则
语言 | PHP | JavaScript |
---|---|---|
创建正则表达式 | $pattern = "/.*/i"; | var re = /ab+c/; |
PCRE 正则 | int preg_match ( string subject [, array &flags = 0 [, int $offset = 0 ]]] ) | var myRe = /d(b+)d/g; var myRe = new RegExp("d(b+)d", "g"); |
POSIX 正则 | ereg ( string string [, array &$regs ] ) : int | (无) |
数学函数
语言 | PHP | JavaScript |
---|---|---|
随机函数 | min, $max); // 返回 min~max 之间的随机整数 | Math.random() // 返回 0 ~ 1 之间的随机数 |
x的y次方 | pow(x,y) | Math.pow(x,y) |
包、空间
语言 | PHP | JavaScript |
---|---|---|
命名空间 | namespace MySpace; | (无) |
引入包 | use Package; use Package as Package1, Package2; | const http = require('http') (CommonJS规范) import "my-module"; import {foo as fo, bar} from "my-module"; (es6实现,import需要和export配合使用) |
引入文件 | include 'b.php'; require 'bc.php'; | <script type='text/javascript' src='b.js'></script> (仅在html中用) |
其他
语言 | PHP | JavaScript |
---|---|---|
展开,可变函数 | function add(...numbers) { <br/> foreach (numbers as n) { <br/> sum += $n; } } echo add(1, 2, 3, 4); // PHP5.6 开始支持 | function myFunction(x, y, z) { } var args = [0, 1, 2]; myFunction(...args); (ES6开始支持) |
解构 | a, c) = a, 'c'=>my_array; | var date1 = [1970, 2, 1]; [ year, mouth ]= date1; var date2 = {year: 1980, mouth: 3, day: 21}; ({ mouth } = date2); console.log(date1); console.log(year); console.log(mouth); |
欢迎大家收藏,如果你觉得需要补充的地方,请留言。