當前位置: 首頁> 最新文章列表> PHP關聯數組可以用array_push添加元素嗎?正確方法教你操作

PHP關聯數組可以用array_push添加元素嗎?正確方法教你操作

gitbox 2025-08-30

array_push()的作用

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> &amp;</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>] =&gt; </span><span><span class="hljs-number">1</span></span><span>
    [</span><span><span class="hljs-meta">1</span></span><span>] =&gt; </span><span><span class="hljs-number">2</span></span><span>
    [</span><span><span class="hljs-meta">2</span></span><span>] =&gt; </span><span><span class="hljs-number">3</span></span><span>
    [</span><span><span class="hljs-meta">3</span></span><span>] =&gt; </span><span><span class="hljs-number">4</span></span><span>
    [</span><span><span class="hljs-meta">4</span></span><span>] =&gt; </span><span><span class="hljs-number">5</span></span><span>
)
</span></span>

然而, array_push()的行為與關聯數組有些不同。我們來看看為什麼。


關聯數組能否使用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> =&gt; </span><span><span class="hljs-string">'John'</span></span><span>, </span><span><span class="hljs-string">'age'</span></span><span> =&gt; </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>] =&gt; John
    [</span><span><span class="hljs-meta">age</span></span><span>] =&gt; </span><span><span class="hljs-number">25</span></span><span>
    [</span><span><span class="hljs-meta">0</span></span><span>] =&gt; 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> =&gt; </span><span><span class="hljs-string">'John'</span></span><span>, </span><span><span class="hljs-string">'age'</span></span><span> =&gt; </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>] =&gt; John
    [</span><span><span class="hljs-meta">age</span></span><span>] =&gt; </span><span><span class="hljs-number">25</span></span><span>
    [</span><span><span class="hljs-meta">job</span></span><span>] =&gt; 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>] =&gt; John
    [</span><span><span class="hljs-meta">age</span></span><span>] =&gt; </span><span><span class="hljs-number">25</span></span><span>
    [</span><span><span class="hljs-meta">job</span></span><span>] =&gt; developer
    [</span><span><span class="hljs-meta">city</span></span><span>] =&gt; New York
)
</span></span>