全棧工程師看過來,學的計算機語言多了,往往會把不同語言的各個函式搞混。作為一個全棧PHPer,往往PHP、JavaScript 語法傻傻分不清楚,百度一下,查手冊要網速。不如收藏下這篇文章,列印出來,貼到一旁快速查閱。
JavaScript 的一些陣列map函式有jQuery實現,ES6後,又出了官方實現。PHP 的陣列、字串相關函式的命名隨性,這仨一塊就更容易混淆了。
編碼風格
語言 | PHP | JavaScript |
---|---|---|
換行 | ; 號是必須的,\n 不是必須的 |
換行 \n ,以及 ; 號都不是必須的,for(;;)除外 |
大小寫敏感度 | 只有變數名區分大小寫 | 變數名、函式名、類名等 都區分大小寫 |
嚴格模式 | 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; function myFunc() { global $varName; } (函式內使用全域性變數,必須要用global變數宣告使用外部的全域性變數) |
var varName1 = 3; varName2 = 2; function myFunc() { varName3 = 6; } (這裡寫法varName1,2,3都是全域性變數) |
全域性符號表 | $GLOBALS 陣列 | window 物件(html環境中) global 物件(nodejs環境) |
為定義變數 | null | undefined |
變數轉換
語言 | PHP | JavaScript |
---|---|---|
轉bool,boolean | $bar = (boolean) $foo; $bar = (bool) $foo; $bar = boolval($foo); |
boolVal = Boolean(‘’) |
轉 int | $bar = (int) $foo; $bar = (integer) $foo; $bar = intval($foo); |
intVal = Number(“314”) intVal = parseInt(“3.14”) |
轉 float | $bar = (float) $foo; $bar = (double) $foo; $bar = (real) $foo; $bar = floatval($foo); |
floatVal = Number(“3.14”) flotaVal = parseFloat(“12”) |
轉換為 string | $bar = (string) $foo; $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 = new DateTime(); $date->setTimestamp(1171502725); |
var date = new Date(1398250549490); |
字元轉日期 | $dateObj = new DateTime($dateStr); | var myDateObj = new Date(Date.parse(datetimeStr)) |
轉換為 空 | (unset) $var; \ 不會刪除該變數或 unset 其值。僅是返回 NULL 值而已 | |
獲取型別 | $varType = gettype($var); | varType = typeof myCar |
類判斷 | $boolRe = $a instanceof MyClass; | boolRe = a instanceof MyClass new Date().constructor === Date |
魔法變數
語言 | PHP | JavaScript |
---|---|---|
當前檔案 | $filePath = __FILE__; | filePath = __filename |
當前目錄 | $currentDir = __DIR__; | curDir = __dirname |
當前程式碼行 | __LINE__ | |
當前函式 | __FUNCTION__ | |
當前類 | __CLASS__ | |
當前名稱空間 | __NAMESPACE__ |
運算子
語言 | PHP | JavaScript |
---|---|---|
三目(三元)運算 | $a = $a ? $a : 1;//第一種 $a = $a ? : 1;//第二種 PHP5.3支援 |
re = isMember ? 2.0 : ‘$10.00’ |
合併運算子 | $a = $a ?? 1; // PHP7支援 |
陣列
語言 | PHP | JavaScript |
---|---|---|
基本 | $a=array(0 => 1, 1 => 2,4,5,6); $array = [ “foo” => “bar”, “bar” => “foo”]; // PHP 7語法 |
b = [1,2,3] |
追加 | $arr = array(); $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=1; $i<=5; $i++) { echo $i ; } |
for (var i=0; i < cars.length ; i++) { document.write(cars[i]); } |
foreach ,for in 迴圈 | $x=array(“one”,”two”,”three”); foreach ($x as $value) { echo $value; } |
var person= {fname:”John”,lname:”Doe”,age:25}; for (x in person) { txt=txt + person[x]; } |
while 迴圈 | while ($i <= 5) { echo $i ; $i++; } |
while (i<5) { x=x + “num is “ + i ; i++; } |
do while 迴圈 | do { $i++; echo $i; } while ($ i<= 5); |
do { console.log(i); i++; } while (i < 5); |
陣列函式
語言 | PHP | JavaScript |
---|---|---|
獲取陣列中元素的數目 | count($arr); | arrayObject.length |
拼接兩個字串 | array_merge($arr1, $arr2); | arr1.concat(arr2) |
刪除陣列元素 | unset($arr[$key]); | delete arr1[key] |
將陣列拼接成字串 | implode(‘,’, $arr1); | arr.join(‘,’) |
刪除並返回陣列最後元素 | $re = array_pop($arr1); | re = arrayObject.pop() |
向陣列的末尾新增一個元素 | array_push($arr1, $var1); | len = arrayObject.push(newele1) |
將陣列的第一個元素刪除並返回 | $re = array_shift($arr1); | re = arrayObject.shift() |
向陣列的開頭新增一個或更多元素 | array_unshift($arr1, $var1); | len = arrayObject.unshift(newele1) |
從已有的陣列中返回選定的元素 | $newArr = array_splice($arr1,$start,$len); | newArr = arrayObject.slice(start,end) |
排序 | sort($arr1); | arrayObject.sort(sortByFunc = null) |
顛倒陣列中元素的順序 | array_reverse(&$arr, $keepKeys = true); | arrayObject.reverse() |
each 函式 | function map_Spanish($n) { echo $n; } $b = array(“uno”, “dos”, “tres”, “cuatro”, “cinco”); $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, $item) { $carry += $item; return $carry; } $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) { // returns whether the input integer is odd return($var & 1); } $array1 = array(“a”=>1, “b”=>2, “c”=>3, “d”=>4, “e”=>5); echo “Odd :\n”; array_filter($array1, “odd”); |
function isBigEnough(element) { return element >= 10; } var filtered = [12, 5, 8, 130, 44].filter(isBigEnough); \\ JavaScript 1.6 引入 |
字元
語言 | PHP | JavaScript |
---|---|---|
建立 | $str = “a string”; \\比較特殊的是PHP在雙引號字元中可以解析變數 $str2 = ‘tow string’; |
var carname = “Volvo XC60”; var carname = ‘Volvo XC60’; (同樣的在雙引號中可以使用跳脫字元) |
多行字元 | $bar = <<<EOT foo bar EOT; |
var tmpl =’\ !!! 5\ html\ include header\ body\ include script’ |
字元拼接 | $str1 . $str2 | str1 + str2 |
字串函式
語言 | PHP | JavaScript |
---|---|---|
獲取字元長度 | strlen($str); | string.length |
獲取子字串 | substr ( string $string , int $start [, int $length ] ) : string | string.substr(start,length) str.slice(1,5); |
使用一個字串分割另一個字串 | $pizza = “piece1 piece2 piece3 piece4 piece5 piece6”; $pieces = explode(“ “, $pizza); echo $pieces[0]; // piece1 |
var str=”How are you doing today?”; var n=str.split(“ “); \ output:How,are,you,doing,today? |
去除字串首尾處的空白字元(或者其他字元) | trim ( string $str [, string $character_mask = “ \t\n\r\0\x0B” ] ) : string (PHP 函式的可定製要強一點) |
var str = “ string “; alert(str.trim()); |
查詢字串首次出現的位置 | $mystring = ‘abcsdfdsa’; $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 |
---|---|---|
函式引數 | $argv = func_get_args ( void ); | var argv = arguments \\ 直接一個函式內物件 |
物件
語言 | PHP | JavaScript |
---|---|---|
空物件 | $obj = new stdClass(); | var obj = new Object(); // 或者 person={firstname:”John”,lastname:”Doe”,age:50,eyecolor:”blue”}; |
物件屬性 | $obj = new stdClass(); $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 $pattern , string $subject [, array &$matches [, int $flags = 0 [, int $offset = 0 ]]] ) | var myRe = /d(b+)d/g; var myRe = new RegExp(“d(b+)d”, “g”); |
POSIX 正則 | ereg ( string $pattern , string $string [, array &$regs ] ) : int | (無) |
數學函式
語言 | PHP | JavaScript |
---|---|---|
隨機函式 | $re = mt_rand($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) { foreach ($numbers as $n) { $sum += $n; } } echo add(1, 2, 3, 4); // PHP5.6 開始支援 |
function myFunction(x, y, z) { } var args = [0, 1, 2]; myFunction(…args); (ES6開始支援) |
解構 | $my_array = array(‘a’=>’Dog’,’b’=>’Cat’,’c’=>’Horse’); list($a, $b, $c) = $my_array; // php5, 如果是php7版本支援以下語法 [‘a’=>$a, ‘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); |
歡迎大家收藏,如果你覺得需要補充的地方,請留言。
PS: 表格內程式碼格式實在不好調整,見諒.如果有好的格式建議,請賜教.
本作品採用《CC 協議》,轉載必須註明作者和本文連結