2011-01-25 16 views
0

$ _SESSIONで配列を扱うスクリプトがありますが、その配列内の特定の値を変更したいと思います。私はネストされたforeachルートに行くことができる、しかし、私はより単純な解決策がないと思う。PHP配列 - ディープアソシエイティブ配列の相対位置の値を変更する簡単な方法

私はこれは私が$グループと$の役割の変数を知っていれば簡単に変更でき、もちろんです

$_SESSION['roles'][$group][$role]['status'] = 'disabled'; 

のようなルックスを変更したい配列の枝、しかしスクリプトのために私が記述しようとしています私は[ステータス]の最初のインスタンスを「アクティブ」に変更したいだけです。 (それは私が働く

$_SESSION['roles'][key($_SESSION['roles'])][key(current($_SESSION['roles']))]['status'] = 'active'; 

を試してみました

配列[「役割」] $ _SESSIONの最初の$グループ内の最初の$の役割の状態であるが、これも不器用なようだ。私が足りませんシンプルなここの機能?

答えて

2

は良い解決策はありません。「相対/シーケンシャルアクセス」と「連想配列」とにかく非常によく一緒に適合しない。

ところで、あなたがあなたの前に配列してやったことに応じて、key()は最初のキーを返します。

編集:最初の部分については、$_SESSION['roles'][key($_SESSION['roles'])]reset($_SESSION['roles'])に置き換えることができます。これは、配列の最初の要素を返します。 PHPが無変数をreset()に渡すことができる場合は、内部配列に対しても同様の処理を行うことができます。つまり、reset(reset($_SESSION['roles']))です。

関連する問題