二維陣列在迴圈傳引用( )時需注意

2021-08-16 05:10:39 字數 995 閱讀 9607

首先進行描述問題:

乙個平常的二維陣列,如下面這個陣列

$arr = [

"a" => [

"1" => "5",    

"5" => "25",    

"4" => "8",    

"3" => "13",    

],"b" => [

"9" => "10",    

"6" => "19",    

"8" => "21",    

"7" => "29",    ]];

我現在需要將這個二維陣列裡面的一維關聯陣列進行按照鍵值排序,因為要改變陣列內部值所以我使用了傳引用

foreach ($arr as $key => & $value)

完成排序操作之後我列印陣列,此時陣列是這樣的

array

( [a] => array

([1] => 5

[3] => 13

[4] => 8

[5] => 25

)[b] => array

([6] => 19

[7] => 29

[8] => 21

[9] => 10

))

它已經成功進行了排序,然後我餓們再次迴圈陣列進行使用的時候,我們就需要注意問題了

foreach ($arr as $key => $value)

很簡單的foreach遍歷迴圈,然而在陣列裡面進行使用陣列時,下標a的陣列和下標b的陣列的值都是下標a指向的陣列

array(4)

array(4)
這時問題就來了,為什麼會這樣呢?其實就是我們在上面對陣列進行了引用傳遞,然後在下面再次迴圈的時候引用傳遞還在對此陣列產生作用,在迴圈第二次的時候就解析成了傳引用,所以下標b出現的陣列就是下標a的

想要解決這個問題也很簡單,只需要再次迴圈時再加上乙個&引用符,或者將上虞個引用符銷毀就行了

上述問題屬於個人碰見的坑所以將它分享出來,勿噴,謝謝

C 二維陣列傳參

今天寫程式的時候要用到二維陣列作引數傳給乙個函式,我發現將二維陣列作引數進行傳遞還不是想象得那麼簡單裡,但是最後我也解決了遇到的問題,所以這篇文章主要介紹如何處理二維陣列當作引數傳遞的情況,希望大家不至於再在這上面浪費時間。正文 首先,我引用了譚浩強先生編著的 c程式設計 上面的一節原文,它簡要介紹...

二維陣列指標傳參

希望能幫助到你,我將無比快樂。你的點讚 是我前進的動力。初遇二維陣列作函式引數,宛如自己化身為了大頭兒子。很頭大。在此,我要撥開這些問題的一些迷霧。我相信,有心人看完後,再遇就不會怕了。其實宣告,定義是一樣的。因此,只寫宣告。同時,把元素外層 剝去就代表位址。因此只寫元素。最後有總結。二維陣列作函式...

二維陣列的引用總結

來看 c primer 中給出的方法 cpp view plain copy void func1 intiarray 10 intmain 編譯通過,注意形參宣告一定要給出第二個維度的大小,要不編譯不過。cpp view plain copy void func2 int parray 10 vo...