PHP Javascript 语法对照、速查

228 阅读3分钟

全栈工程师看过来,学的计算机语言多了,往往会把不同语言的各个函数搞混。作为一个全栈PHPer,往往PHP、JavaScript 语法傻傻分不清楚,百度一下,查手册要网速。不如收藏下这篇文章,打印出来,贴到一旁快速查阅。

JavaScript 的一些数组map函数有jQuery实现,ES6后,又出了官方实现。PHP 的数组、字符串相关函数的命名随性,这仨一块就更容易混淆了。

编码风格

语言PHPJavaScript
换行; 号是必须的,\n不是必须的换行 \n,以及 号都不是必须的
大小写敏感度只有变量名区分大小写变量名、函数名、类名等 都区分大小写
严格模式declare(strict_types=1); (PHP7新特性)"use strict";(ECMAScript 5 引入)

变量声明

语言PHPJavaScript
常量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 对象
为定义变量nullundefined

变量转换

语言PHPJavaScript
转bool,booleanbar=(boolean)bar = (boolean) foo;
bar=(bool)bar = (bool) foo;
bar=boolval(bar = boolval(foo);
boolVal = Boolean('')
转 intbar=(int)bar = (int) foo;
bar=(integer)bar = (integer) foo;
bar=intval(bar = intval(foo);
intVal = Number("314")
intVal = parseInt("3.14")
转 floatbar=(float)bar = (float) foo;
bar=(double)bar = (double) foo;
bar=(real)bar = (real) foo;
bar=floatval(bar = floatval(foo);
floatVal = Number("3.14")
flotaVal = parseFloat("12")
转换为 stringbar=(string)bar = (string) foo;
bar=strval(bar = strval(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=newDateTime();<br/>date = new DateTime(); <br/> date->setTimestamp(1171502725);var date = new Date(1398250549490);
字符转日期dateObj=newDateTime(dateObj = new DateTime(dateStr);var myDateObj = new Date(Date.parse(datetimeStr))
转换为 空(unset) $var; \ 不会删除该变量或 unset 其值。仅是返回 NULL 值而已
获取类型varType=gettype(varType = gettype(var);varType = typeof myCar
类判断boolRe=boolRe = a instanceof MyClass;boolRe = a instanceof MyClass
new Date().constructor === Date

运算符

语言PHPJavaScript
三目(三元)运算a=a = a ? a:1;//第一种<br/>a : 1;//第一种 <br/> a = $a ? : 1;//第二种 PHP5.3支持re = isMember ? 2.0 : '$10.00'
合并运算符a=a = a ?? 1; // PHP7支持

数组

语言PHPJavaScript
基本a=array(0=>1,1=>2,4,5,6);<br/>a=array(0 => 1, 1 => 2,4,5,6); <br/> array = [ "foo" => "bar", "bar" => "foo"]; // PHP 7语法b = [1,2,3]
追加arr=array();<br/>arr = array(); <br/> arr[key1] = value1;
$arr[key2] = value2;
var mycars=new Array()
mycars[0]="Saab"
mycars[1]="Volvo"
mycars[2]="BMW"
newvar mycars = new Array("Saab","Volvo","BMW")

循环

语言PHPJavaScript
for 循环for (i=1;i=1; i<=5; i++) <br/> {<br/> echo i ;
}
for (var i=0; i < cars.length ; i++)
{
document.write(cars[i]);
}
foreach ,for in 循环x=array("one","two","three");<br/>foreach(x=array("one","two","three"); <br/> foreach (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++;<br/>echoi++;<br/> echo i;
} while ($i<=5);
do
{
document.write(i);
i++;
}
while (i<5);

数组函数

语言PHPJavaScript
获取数组中元素的数目count($arr);arrayObject.length
拼接两个字符串array_merge(arr1,arr1, arr2);arr1.concat(arr2)
删除数组元素unset(arr[arr[key]);delete arr1[key]
将数组拼接成字符串implode(',', $arr1);arr.join(‘,’)
删除并返回数组最后元素re=arraypop(re = array_pop(arr1);re = arrayObject.pop()
向数组的末尾添加一个元素array_push(arr1,arr1, var1);len = arrayObject.push(newele1)
将数组的第一个元素删除并返回re=arrayshift(re = array_shift(arr1);re = arrayObject.shift()
向数组的开头添加一个或更多元素array_unshift(arr1,arr1, var1);len = arrayObject.unshift(newele1)
从已有的数组中返回选定的元素newArr=arraysplice(newArr = array_splice(arr1,start,start,len);newArr = arrayObject.slice(start,end)
排序sort($arr1);arrayObject.sort(sortByFunc = null)
颠倒数组中元素的顺序array_reverse(&arr,arr, keepKeys = true);arrayObject.reverse()
each 函数function map_Spanish(n)<br/>{<br/> echo n;
}
b=array("uno","dos","tres","cuatro","cinco");<br/>b = array("uno", "dos", "tres", "cuatro", "cinco");<br/>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(carry,carry, item) {
carry+=carry += 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=array("a"=>1,"b"=>2,"c"=>3,"d"=>4,"e"=>5);<br/>echo"Odd:\n";<br/>printr(arrayfilter(array1 = array("a"=>1, "b"=>2, "c"=>3, "d"=>4, "e"=>5);<br/>echo "Odd :\n";<br/>print_r(array_filter(array1, "odd"));
function isBigEnough(element) {
return element >= 10;
}
var filtered = [12, 5, 8, 130, 44].filter(isBigEnough); \ JavaScript 1.6 引入

原文在这

字符

语言PHPJavaScript
创建str="astring";<br/>比较特殊的是PHP在双引号字符中可以解析变量<br/>str = "a string"; <br/> \\\\比较特殊的是PHP在双引号字符中可以解析变量 <br/> 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'
字符拼接str1.str1 . str2str1 + str2

字符串函数

语言PHPJavaScript
获取字符长度strlen($str);string.length
获取子字符串substr ( string string,intstring , int start [, int $length ] ) : stringstring.substr(start,length)
str.slice(1,5);
使用一个字符串分割另一个字符串pizza="piece1piece2piece3piece4piece5piece6";<br/>pizza = "piece1 piece2 piece3 piece4 piece5 piece6";<br/>pieces = explode(" ", pizza);<br/>echopizza);<br/>echo pieces[0]; // piece1var str="How are you doing today?";
var n=str.split(" ");
\ output:How,are,you,doing,today?
去除字符串首尾处的空白字符(或者其他字符)trim ( string str[,stringstr [, string character_mask = " \t\n\r\0\x0B" ] ) : string
(PHP 函数的可定制要强一点)
var str = " string ";
alert(str.trim());
查找字符串首次出现的位置mystring=abcsdfdsa;<br/>mystring = 'abcsdfdsa'; <br/> pos = strpos($mystring, 'cs');var str="Hello world, welcome to the universe.";
var n=str.indexOf("welcome");
把字符串转换为小写strtolower ( string $string ) : stringstring.toLowerCase()
把字符串转换为大写strtoupper ( string $string ) : stringstring.toUpperCase()

对象

语言PHPJavaScript
空对象$obj = new stdClass();var obj = new Object(); // 或者
person={firstname:"John",lastname:"Doe",age:50,eyecolor:"blue"};
对象属性obj=newstdClass();<br/>obj = new stdClass(); <br/> obj->a = 12;var myCar = new Object();
myCar.year = 1969; // js还可以以数组形式
myCar["year"] = 1969;
删除属性unset($obj->a);delete object.property
delete object['property']

正则

语言PHPJavaScript
创建正则表达式$pattern = "/.*/i";var re = /ab+c/;
PCRE 正则int preg_match ( string pattern,stringpattern , string subject [, array &matches[,intmatches [, int flags = 0 [, int $offset = 0 ]]] )var myRe = /d(b+)d/g;
var myRe = new RegExp("d(b+)d", "g");
POSIX 正则ereg ( string pattern,stringpattern , string string [, array &$regs ] ) : int(无)

数学函数

语言PHPJavaScript
随机函数re=mtrand(re = mt_rand(min, $max); // 返回 min~max 之间的随机整数Math.random() // 返回 0 ~ 1 之间的随机数
x的y次方pow(x,y)Math.pow(x,y)

包、空间

语言PHPJavaScript
命名空间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中用)

其他

语言PHPJavaScript
展开,可变函数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开始支持)
解构myarray=array(a=>Dog,b=>Cat,c=>Horse);<br/>list(my_array = array('a'=>'Dog','b'=>'Cat','c'=>'Horse'); <br/> list(a, b,b, c) = myarray;<br/>//php5,如果是php7版本支持以下语法<br/>[a=>my_array; <br/>// php5, 如果是php7版本支持以下语法 <br/> ['a'=>a, 'c'=>c]=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);

欢迎大家收藏,如果你觉得需要补充的地方,请留言。