array_push()是一個專門用於向數組的末尾添加一個或多個元素的函數。它的語法如下:
<span><span><span class="hljs-title function_ invoke__">array_push</span></span><span>(</span><span><span class="hljs-keyword">array</span></span><span> &</span><span><span class="hljs-variable">$array</span></span><span>, </span><span><span class="hljs-keyword">mixed</span></span><span> ...</span><span><span class="hljs-variable">$values</span></span><span>): </span><span><span class="hljs-keyword">int</span></span><span>
</span></span>
$array :這是目標數組,它是按引用傳遞的。
$values :這些是要添加到數組末尾的元素,可以是一個或多個。
對於普通的索引數組(即,數組的鍵是數字), array_push()會將新元素添加到數組的末尾,數組的索引會自動遞增。
<span><span><span class="hljs-variable">$arr</span></span><span> = [</span><span><span class="hljs-number">1</span></span><span>, </span><span><span class="hljs-number">2</span></span><span>, </span><span><span class="hljs-number">3</span></span><span>];
</span><span><span class="hljs-title function_ invoke__">array_push</span></span><span>(</span><span><span class="hljs-variable">$arr</span></span><span>, </span><span><span class="hljs-number">4</span></span><span>, </span><span><span class="hljs-number">5</span></span><span>); </span><span><span class="hljs-comment">// 將 4 和 5 添加到數組末尾</span></span><span>
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$arr</span></span><span>);
</span></span>
輸出:
<span><span>Array
(
[</span><span><span class="hljs-meta">0</span></span><span>] => </span><span><span class="hljs-number">1</span></span><span>
[</span><span><span class="hljs-meta">1</span></span><span>] => </span><span><span class="hljs-number">2</span></span><span>
[</span><span><span class="hljs-meta">2</span></span><span>] => </span><span><span class="hljs-number">3</span></span><span>
[</span><span><span class="hljs-meta">3</span></span><span>] => </span><span><span class="hljs-number">4</span></span><span>
[</span><span><span class="hljs-meta">4</span></span><span>] => </span><span><span class="hljs-number">5</span></span><span>
)
</span></span>
然而, array_push()的行為與關聯數組有些不同。我們來看看為什麼。
對於關聯數組, array_push()並不是一個推薦的方式。原因在於, array_push()會根據數組的結構將元素附加到數組的末尾,而關聯數組的鍵是由開發者自行定義的,不一定是數字型的遞增序列。所以,嘗試使用array_push()向關聯數組添加元素時,新的元素會被添加到數組的末尾,並且會自動使用一個遞增的整數索引作為鍵,而不是你自己定義的關聯鍵。
<span><span><span class="hljs-variable">$assocArray</span></span><span> = [</span><span><span class="hljs-string">'name'</span></span><span> => </span><span><span class="hljs-string">'John'</span></span><span>, </span><span><span class="hljs-string">'age'</span></span><span> => </span><span><span class="hljs-number">25</span></span><span>];
</span><span><span class="hljs-title function_ invoke__">array_push</span></span><span>(</span><span><span class="hljs-variable">$assocArray</span></span><span>, </span><span><span class="hljs-string">'developer'</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$assocArray</span></span><span>);
</span></span>
輸出:
<span><span>Array
(
[</span><span><span class="hljs-meta">name</span></span><span>] => John
[</span><span><span class="hljs-meta">age</span></span><span>] => </span><span><span class="hljs-number">25</span></span><span>
[</span><span><span class="hljs-meta">0</span></span><span>] => developer
)
</span></span>
可以看到, array_push()向數組末尾添加了一個值'developer' ,但是它自動使用了數字索引[0] ,這顯然並不是我們期望的行為。
要正確向關聯數組添加元素,應該直接使用數組的鍵來進行賦值,而不是使用array_push() 。例如,假設我們希望添加一個新的鍵值對,可以按照以下方式進行操作:
<span><span><span class="hljs-variable">$assocArray</span></span><span> = [</span><span><span class="hljs-string">'name'</span></span><span> => </span><span><span class="hljs-string">'John'</span></span><span>, </span><span><span class="hljs-string">'age'</span></span><span> => </span><span><span class="hljs-number">25</span></span><span>];
</span><span><span class="hljs-variable">$assocArray</span></span><span>[</span><span><span class="hljs-string">'job'</span></span><span>] = </span><span><span class="hljs-string">'developer'</span></span><span>; </span><span><span class="hljs-comment">// 使用關聯鍵 "job" 添加元素</span></span><span>
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$assocArray</span></span><span>);
</span></span>
輸出:
<span><span>Array
(
[</span><span><span class="hljs-meta">name</span></span><span>] => John
[</span><span><span class="hljs-meta">age</span></span><span>] => </span><span><span class="hljs-number">25</span></span><span>
[</span><span><span class="hljs-meta">job</span></span><span>] => developer
)
</span></span>
如上所示,我們通過直接指定關聯鍵job來向關聯數組中添加元素,這樣就能準確地控制數組的結構。
如果你需要動態添加鍵值對,可以先定義一個新的鍵,再將對應的值賦給它。例如:
<span><span><span class="hljs-variable">$key</span></span><span> = </span><span><span class="hljs-string">'city'</span></span><span>;
</span><span><span class="hljs-variable">$value</span></span><span> = </span><span><span class="hljs-string">'New York'</span></span><span>;
</span><span><span class="hljs-variable">$assocArray</span></span><span>[</span><span><span class="hljs-variable">$key</span></span><span>] = </span><span><span class="hljs-variable">$value</span></span><span>; </span><span><span class="hljs-comment">// 動態添加</span></span><span>
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$assocArray</span></span><span>);
</span></span>
輸出:
<span><span>Array
(
[</span><span><span class="hljs-meta">name</span></span><span>] => John
[</span><span><span class="hljs-meta">age</span></span><span>] => </span><span><span class="hljs-number">25</span></span><span>
[</span><span><span class="hljs-meta">job</span></span><span>] => developer
[</span><span><span class="hljs-meta">city</span></span><span>] => New York
)
</span></span>