JS數組與PHP數組的對比
阿新 • • 發佈:2018-10-04
php數組 數組 參數傳遞 clas 傳遞 轉換 比較 class nbsp
一、分類與創建
1:JS的數組都是索引數組,數組是一種特殊的對象,創建數組的方式有兩種
//方式一 var arr1 = [‘關羽‘, ‘張飛‘, ‘趙雲‘, ‘馬超‘, ‘黃忠‘]; //方式二 var arr2 = new Array(); arr2[0] = ‘關羽‘; arr2[1] = ‘張飛‘; arr2[2] = ‘趙雲‘; arr2[3] = ‘馬超‘; arr2[4] = ‘黃忠‘;
2:PHP數組分為索引數組和關聯數組,創建方式也有兩種
//方式一(索引數組) $arr1 = [‘關羽‘, ‘張飛‘, ‘趙雲‘, ‘馬超‘, ‘黃忠‘]; //方式二(關聯數組)$arr2 = array(‘一‘=>‘關羽‘, ‘二‘=>‘張飛‘, ‘三‘=>‘趙雲‘, ‘四‘=>‘馬超‘, ‘五‘=>‘黃忠‘);
二、JS數組賦值是引用傳遞,而PHP賦值的是一個副本
var arr1 = [‘關羽‘, ‘張飛‘, ‘趙雲‘, ‘馬超‘, ‘黃忠‘]; var arr2 = [‘關羽‘, ‘張飛‘, ‘趙雲‘, ‘馬超‘, ‘黃忠‘]; alert(arr1 == arr2); //輸出false
$arr1 = array(‘關羽‘, ‘張飛‘, ‘趙雲‘, ‘馬超‘, ‘黃忠‘); $arr2 = array(‘關羽‘, ‘張飛‘, ‘趙雲‘, ‘馬超‘, ‘黃忠‘); echo $arr1 === $arr2; //輸出1
JS 對象常稱為引用類型,對象的比較均是引用的比較 ,當它們引用同一基對象時,才相等,而php除了 object 外,
其他類型變量大多在賦值、參數傳遞、返回值中得到都是它的副本, 很少使用按址傳遞(引用傳遞),如下:
$arr1 = array(‘關羽‘, ‘張飛‘, ‘趙雲‘, ‘馬超‘, ‘黃忠‘); $arr2 = &$arr1; //引用傳遞 $arr1[5] = ‘魏延‘; echo $arr1 === $arr2; //仍然輸出1,$arr2隨$arr1改變
三、由於JS不支持關聯數組,所以PHP中json_encode()只將索引數組轉為數組格式,而將關聯數組轉為對象格式。
$arr1 = array(‘one‘, ‘two‘, ‘three‘, ‘four‘, ‘five‘); echo json_encode($arr1); //索引數組轉換為數組格式["one","two","three","four","five"]
$arr2 = array(‘1‘=>‘one‘, ‘2‘=>‘two‘, ‘3‘=>‘three‘, ‘4‘=>‘four‘, ‘5‘=>‘five‘); echo json_encode($arr2); //關聯數組轉換為對象格式 {"1":"one","2":"two","3":"three","4":"four","5":"five"}
JS數組與PHP數組的對比