2010-12-20 17 views
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つのラインソリューション)があるか、私は一時に持ち込むことを強制しています。変数に追加して、その値をオブジェクトにマージ/再割り当てしますか?

+0

最初のバージョンがうまくいかないと言ったら、どのように失敗しましたか? 'pathsArray'は単に変更されませんでしたか?そうであれば、オブジェクトには、あなたが要求するたびに実際に格納された配列の*コピー*を与える、ある種のカスタムget/setロジックがあることが示唆されます(したがって、実際にそれを変更する唯一の方法は、設定されたロジックは、配列全体を上書きします)。その場合、最初の回避策はおそらく最も簡単な方法です。 – Amber

+0

@Tom最初に 'key1'と' key2'キーをどうやって設定しましたか? 'pathsArray'属性はprivate/protectedとして定義されていますか? –

+0

@Amber、私は今、完璧な意味を説明したget/setロジックについては考慮しませんでした。 – Tom

答えて

0

申し訳ありませんが、私はコメントできません。 私は、そのように使用するために属性を公開することは正しくないと思います。正しいことは、そのためのクラスデザインを変更するのではなく、それを埋めるためのセッターを作るべきです。

関連する問題