1
したがって、オブジェクトに格納されている多次元配列があります。この配列にキーを追加したいと思います。多次元配列をオブジェクト変数として格納し、配列にキーを追加する
は、ここで私が持っているものだ:
$object->pathsArray = array(
"key1" => array('path' => '/some/path/to/some/file.php', 'action' => 'index'),
"key2" => array('path' => '/some/path/to/some/class.php', 'action' => 'method2')
);
そして、ここでは、私がうまくいくと仮定ではなく、やったことだ:
$object->pathsArray['key3'] = array('path' => '/some/path/to/some/method/or/script.php', 'action' => 'method3');
私の最初の回避策:
$newPathsArray = array("key3" => array('path' => '/some/path/to/some/method/or/script.php', 'action' => 'method3'));
$object->pathsArray = array_merge($object->pathsArray, $newPathsArray);
動作するはずです別の回避策:
$tempPathsArray = $object->pathsArray;
$tempPathsArray['key3'] = array('path' => '/some/path/to/some/method/or/script.php', 'action' => 'method3');
$object->pathsArray = $tempPathsArray;
だから私の質問:は簡単な構文(すなわち:1つのラインソリューション)があるか、私は一時に持ち込むことを強制しています。変数に追加して、その値をオブジェクトにマージ/再割り当てしますか?
最初のバージョンがうまくいかないと言ったら、どのように失敗しましたか? 'pathsArray'は単に変更されませんでしたか?そうであれば、オブジェクトには、あなたが要求するたびに実際に格納された配列の*コピー*を与える、ある種のカスタムget/setロジックがあることが示唆されます(したがって、実際にそれを変更する唯一の方法は、設定されたロジックは、配列全体を上書きします)。その場合、最初の回避策はおそらく最も簡単な方法です。 – Amber
@Tom最初に 'key1'と' key2'キーをどうやって設定しましたか? 'pathsArray'属性はprivate/protectedとして定義されていますか? –
@Amber、私は今、完璧な意味を説明したget/setロジックについては考慮しませんでした。 – Tom