我想了解下面的PHP代碼。這裏是概述,在PHP中引用數組 - 問題
有2個陣列,其由在所述形式中,$ k個密鑰值對=> $ V
這2個陣列被合併在一起使用array_merge函數以形成所述第三陣列。
現在,這個數組被傳遞給一個函數。只有一個參數,數組名稱被傳遞。
下面是代碼(請注意,此代碼只是一個概念,而不是真正的代碼):
<?php
function test(&$myArray, 0)
{
reset($myArray);
foreach ($myArray as $k => $v)
{
....
}
}
$arr3 = array_merge((array) $arr1, (array) $arr2);
test($arr3)
}
問題:
- 功能是這樣定義的,它期望兩個參數,但是我們只傳遞一個參數。是否因爲在函數原型中初始化第二個參數始終爲0?那麼,不需要傳遞相同數量的參數?
- 這裏傳遞數組名稱。我的猜測是,它會傳遞一個指向該函數的數組的第一個元素(內存中數組的基地址)的指針。
在這種情況下,如果您查看原型,數組名前面帶有一個&符號。那麼,這意味着,對數組的引用,地址?
爲什麼有必要調用陣列上的復位功能。是否因爲在測試函數之前調用了用於形成此數組的array_merge函數?所以,由於合併了$ arr1和$ arr2,它將第一個元素前面的數組中的指針移動了?
函數中沒有返回值,測試。那麼,它是否會修改內存本身中原始數組的值,因此不需要返回數組?
謝謝。
這是一個任務或作業或問題? – Laurence
此代碼不起作用;你錯過了sigils('&$ myArray'),你的函數參數列表中有一個'0',並且你有一個神祕的尾部大括號。 – nneonneo
這只是一個概念性代碼(不是真正的代碼)。只有理解這個概念。 @ TheShiftExchange:不,這不是一項任務。我正在閱讀PHP文件的源代碼,並且遇到了類似的代碼,所以我想了解。謝謝。 –