- ベストアンサー
配列の値の変更
<?php $data = array (array ("data1-1", "data1-2"), "data2"); $ar = "data[0][0]"; $$ar = "OK"; echo $data[0][0]; ?> と言うソースを$data[0][0]の値が"OK"になるようなソースを教えてください。 ループやユーザ定義関数を使わないで処理できる方法をお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
自分ではこれが限界 $ar = "data"; ${$ar}[0][0] = "OK"; evalとか使えば出来そうな気もしますがトリッキーな処理になりそう
その他の回答 (3)
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
#3の回答でいいような気がしますが。(添字は、実行時に変えられるから) eval の例 <?php $data = array (array ("data1-1", "data1-2"), "data2"); $ar = "data[0][0]"; eval("\$$ar='OK';"); echo $data[0][0]; ?>
お礼
3の回答では[0][0]の部分を変更できなかったので回答としては私が求めている事を完全に実現する事が出来ませんでした。 この回答は完全に私の行いたい事の障害を解決しています。 ありがとうございました。
- yambejp
- ベストアンサー率51% (3827/7415)
以下でどうでしょ? <?php $data = array (array ("data1-1", "data1-2"), "data2"); $ar = &$data[0][0]; $ar = "OK"; print_r($data); ?>
お礼
1の方の回答と同様$ar = &$data[0][0];を解決する方法がありません。 なぜならば要素名の指定が可変だからです。
- funaho
- ベストアンサー率58% (43/74)
こうすれば、よいのでは。 <?php $data = array (array ("data1-1", "data1-2"), "data2"); $data[0][0] = "OK"; ?>
お礼
代入先の指定の可変性が高いので変数での投入を必要としています。 残念ですが目的を達していません。
お礼
同じく[0][0]を解決できません。 とりあえずevalについて調べます。 ありがとうございます。