- お知らせ -
  • 当wikiのプログラムコードの表示を直してみました(ついでに長い行があると全体が下にぶっ飛ぶのも修正)。不具合があればBBSまでご連絡下さい。

PHP

はじめに Edit

phpで配列(array)をコピー(複製)する方法について
php 5.2.8 CLI for windowsのinteractive modeで確認しました。

代入でOK Edit

phpの配列はオブジェクトのインスタンスのようなリファレンス(参照と言う言い方のほうがいい?)として振舞いませんので、
代入だけで中身がコピーされます。

どおりで検索してもなかなか出てこないわけです…。

例:

<?php 
$a=array('hage', 1234); 
$b = $a;        // コピーされる
$a[0] = TRUE;   // $bは変化なし!
var_dump($a, $b);
?>

結果:

array(2) {
  [0]=>
  bool(true)
  [1]=>
  int(1234)
}
array(2) {
  [0]=>
  string(4) "hage"
  [1]=>
  int(1234)
}

Ruby脳だとまじハマります。


Show recent 10 comments. Go to the comment page.

  • どこの「噂」でしょうか?上記の例は、5.2.8 CLIでのintractive modeでの実際の結果です。
    オブジェクトのインスタンスがコピーされないことと勘違いされているのかもしれません。
    自分も勘違いしていましたので(配列もオブジェクトと思っていた) -- TOBY 2009-04-17 (Fri) 16:09:59
  • バージョン書いてないと紛らわしいので、書いておきましたw -- TOBY 2009-04-17 (Fri) 16:11:34
  • perl脳でもハマりました -- 2013-04-02 (Tue) 12:35:46
  • js脳でもハマりました -- 2013-05-08 (Wed) 19:13:18
  • わかっててもついどうだったか調べたくなる仕様w -- 2013-06-30 (Sun) 03:34:08
  • 脳みそ空っぽですが助かりました! -- ソルジャー見習い? 2013-10-23 (Wed) 17:39:58
  • 配列内はさすがにシャローコピーなんですよね… -- 2013-10-30 (Wed) 16:52:55
  • java脳でもハマりました -- 2015-05-04 (Mon) 20:23:01
  • java脳でもハマりました+1 -- 2016-02-23 (Tue) 10:05:58
    • 助かりました -- [[java、c#脳]] 2016-04-24 (Sun) 16:04:44
  • 代入時点では、参照のままですよ。変更をしようとした時点でコピーを作ります。 -- n? 2016-04-27 (Wed) 17:33:51
Name:

Front page   Edit Freeze Diff Backup Upload Copy Rename Reload   New Pages Search Recent changes   Help   RSS of recent changes
Last-modified: 2009-04-17 Fri 16:11:14 JST (3141d)