• ベストアンサー

配列の値の変更

<?php $data = array (array ("data1-1", "data1-2"), "data2"); $ar = "data[0][0]"; $$ar = "OK"; echo $data[0][0]; ?> と言うソースを$data[0][0]の値が"OK"になるようなソースを教えてください。 ループやユーザ定義関数を使わないで処理できる方法をお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • php504
  • ベストアンサー率42% (926/2160)
回答No.3

自分ではこれが限界 $ar = "data"; ${$ar}[0][0] = "OK"; evalとか使えば出来そうな気もしますがトリッキーな処理になりそう

izayoimizuki
質問者

お礼

同じく[0][0]を解決できません。 とりあえずevalについて調べます。 ありがとうございます。

その他の回答 (3)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.4

#3の回答でいいような気がしますが。(添字は、実行時に変えられるから) eval の例 <?php $data = array (array ("data1-1", "data1-2"), "data2"); $ar = "data[0][0]"; eval("\$$ar='OK';"); echo $data[0][0]; ?>

izayoimizuki
質問者

お礼

3の回答では[0][0]の部分を変更できなかったので回答としては私が求めている事を完全に実現する事が出来ませんでした。 この回答は完全に私の行いたい事の障害を解決しています。 ありがとうございました。

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

以下でどうでしょ? <?php $data = array (array ("data1-1", "data1-2"), "data2"); $ar = &$data[0][0]; $ar = "OK"; print_r($data); ?>

izayoimizuki
質問者

お礼

1の方の回答と同様$ar = &$data[0][0];を解決する方法がありません。 なぜならば要素名の指定が可変だからです。

  • funaho
  • ベストアンサー率58% (43/74)
回答No.1

こうすれば、よいのでは。 <?php $data = array (array ("data1-1", "data1-2"), "data2"); $data[0][0] = "OK"; ?>

izayoimizuki
質問者

お礼

代入先の指定の可変性が高いので変数での投入を必要としています。 残念ですが目的を達していません。

関連するQ&A