1. 程式人生 > >JS數組與PHP數組的對比

JS數組與PHP數組的對比

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數組的對比