PHP Javascript 語法對照

xiaobai_php發表於2020-08-15

全棧工程師看過來,學的計算機語言多了,往往會把不同語言的各個函式搞混。作為一個全棧PHPer,往往PHP、JavaScript 語法傻傻分不清楚,百度一下,查手冊要網速。不如收藏下這篇文章,列印出來,貼到一旁快速查閱。

JavaScript 的一些陣列map函式有jQuery實現,ES6後,又出了官方實現。PHP 的陣列、字串相關函式的命名隨性,這仨一塊就更容易混淆了。

編碼風格

語言 PHP JavaScript
換行 ; 號 換行符號是必須的 換行 \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;
function myFunc() {
global $varName;
}
(函式內使用全域性變數,必須要用global變數宣告使用外部的全域性變數)
var varName1 = 3;
varName2 = 2;
function myFunc() {
varName3 = 6;
} (這裡寫法varName1,2,3都是全域性變數)
全域性符號表 $GLOBALS 陣列 window 物件
為定義變數 null undefined

陣列

語言 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) // x 為屬性名
{
txt=txt + person[x];
}
while 迴圈 while($i <= 5)
{
echo $i ;
$i++;
}
while (i<5)
{
x=x + “The number is “ + i + “
“;
i++;
}
do while 迴圈 do {
$i++;
echo $i;
} while ($i<=5);
do
{
document.write(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”;
print_r(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 =’<br/> !!! 5<br/> html<br/> include header<br/> body<br/> 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
空物件 $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
展開,可變函式 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);

歡迎大家蒐藏,如果你覺得需要補充的地方,請留言。

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章