array_push()は、配列の最後に1つ以上の要素を追加するために特別に使用される関数です。その構文は次のとおりです。
<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>
$配列:これはターゲット配列であり、参照によって渡されます。
$値:これらは、配列の最後に追加される要素であり、1つ以上の場合があります。
通常のインデックス付き配列(つまり、配列のキーは数字です)の場合、 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()はArrayの最後に値「開発者」を追加しますが、数値インデックス[0]を自動的に使用します。これは明らかに予想される動作ではありません。
連想配列に要素を正しく追加するには、 array_push()の代わりにアレイのキーを直接使用して値を割り当てる必要があります。たとえば、新しいKey-Valueペアを追加すると、次のように実行できます。
<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>
上記のように、アレイの構造を正確に制御できるように、連想キージョブを直接指定することにより、連想配列に要素を追加します。
キー値のペアを動的に追加する必要がある場合は、まず新しいキーを定義してから、対応する値を割り当てることができます。例えば:
<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>