首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

JavaScript 與 PHP 陣列傳遞機制差異:引用傳遞 vs 值傳遞實戰驗證

     編輯:PHP 相關知識

JavaScript 與 PHP 陣列傳遞機制差異:引用傳遞 vs 值傳遞實戰驗證

核心差異:JavaScript 陣列為引用傳遞(地址傳遞),PHP 陣列預設為值傳遞(複製傳遞)。這導致函數內修改陣列對外部影響截然不同。

驗證代碼

<?php

$arr = array(3, 9, 4);

function test($arr){

$arr[0] = 30;

}

test($arr);

foreach($arr as $val){

echo $val . " "; // 輸出:3 9 4(原陣列未變)

}

?>

<script language="javascript" type="text/javascript">

var myarr = [343, 90, 28];

function abc(arr){

arr[0] = 35;

}

abc(myarr);

document.writeln(myarr[0]); // 輸出:35(原陣列被修改)

</script>

結果對比

語言傳遞機制函數內修改後外部陣列
PHP值傳遞(Copy-on-Write 優化)不變
JavaScript引用傳遞同步變化

進階說明

  • PHP 5+ 採用 Copy-on-Write (COW):傳遞時不實際複製,僅增加引用計數;**寫入時才真正複製**。因此效能極高,同時保持值語義。
  • PHP 若需引用傳遞,參數前加 &:function test(&$arr)
  • JS 陣列/物件皆為引用型別,基本型別(數字、字串、布林)為值傳遞
  • 跨語言開發(如 API 介接)務必明確資料流向與副作用邊界
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved