PHPの配列の要素をコピーする方法って?

配列をコピーして別の配列を作る方法は無いか?

そんな質問を頂き知らなかったので検索しました。

けど便利な関数は無さそうですね。

 

単純に

のように書いたんじゃダメでしょうか?

この場合$ayr2の値を変更したりすると$ary1の値はどうなるのか?

実験してみました。

PHPの配列の要素をコピーしたら元の配列の影響は?

配列をコピーして、コピーした配列の値を変更した場合、コピー元の配列の値はどうなるのか?

実験してみました。

結果は次のようになりました。

1個目の配列がコピー元で、2個目の配列がコピー先ですね。

結果は、コピー元には影響しないですね。

 

PHPには値渡し参照渡しというものがあります。

 

値渡しというのはここで言うコピーです。

コピーした先で値を変更しても、コピー元には影響しません。

 

参照渡しというのは、メモリに確保した値に対し、住所だけを渡すイメージです。

誰が見るかが違うだけで、参照する値は同じものになります。

この場合コピー先($ary2)で値を変更した場合も、コピー元($ary1)の値が変更されます。

やってみましょう。

2行目の $ary1 の前に & がついています。

これが参照渡しをするときの書き方です。

結果は次のようになります。

1個目の配列がコピー元で、2個目の配列がコピー先ですが、配列のインデックス=4の値がどちらも同じ値になっています。

配列の一部の要素だけコピーはできる?

これに関しても結局便利な関数はありません。

(僕が知らないだけであるかもしれません。そのときは教えてください。)

 

例えば上のような配列があったときに、大阪だけを抜き出して新しい配列にしたいとします。

その場合は以下のように foreach などを使って新しい配列を作成する感じですね。

結果は次のようになります。

1個目の配列がコピー元で2個目の配列がコピー先です。

大阪だけ抜き出して新しい配列を作成できました。

どうですか?

まとめ

配列のコピー??って感じでした。

まあ一般的な処理ですね。

使い方によって値渡しと参照渡しがあります。分からなければ値渡しで大丈夫です。

配列の一部を抜き出す処理もよくありますが、ここで紹介した方法以外にもループの中でif文で判定する方法などがあります。

ただ、便利なものはなかなか無いですね。

コロナの影響でみんな大変だから俺もなんかできること

僕は福井県に住んでいるのですが、戦時中に福井大空襲にあい、その直後に大震災にあってボロボロになった話をおばあちゃんに聞きました。

それでも復活することができ、不死鳥の町と言われるようになりました。

先人達には心から感謝し尊敬します。

リーマンショック、東日本大震災、コロナと数十年に一度と言われる被害が立て続けに起きていますが、僕たちは強いです。

今は苦しいかもしれませんがきっと復活できます。

僕は低学歴ですし小さな小さな粒でしかないですが、プログラミングに関しては必死に勉強し15年以上ごはんにありつけています。

プログラミングを勉強している人の役に立てるほどのスキルはあると思っています。

なので1人でもんもんと悩んでいる若手のエンジニア向けに質問を受け付けることにします。

自宅で待機されている間もパソコンとインターネットがあればプログラミングの勉強はできます。

  • PHP
  • SQL
  • HTML・CSS
  • jQuery

とは言ってもいきなり答えを聞いていたのではなかなか成長できないと思うのです。

なので質問の際には次のことをご連携ください。

  • 何をやりたいか
  • どんなことを調べたか、検索キーワードと参考にしたページのURL
  • 調べた結果どこが分からないか
  • できるなら試したコード

メッセージいはとりあえずTwitterにでもください。

質問はこちら

すぐに返事できないかもしれませんがご了承ください。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA