以下のコードは、キーを既存の配列$options_pool
に動的に連結します。最終的な形式は次のようになります:$options_pool[ $base_key ][ $first_key ][ $second_key ]
...これは、多次元の配列$options_pool
の要素に値を動的に割り当てることができるためです。PHPで変数名が動的に形成されていますか?
foreach($option_name_array as $f_var_name) {
$f_var_name = $value; //particularly this line
}
動作しません:
foreach($this->post_vars as $name => $value) {
//Look for $name key in array $options_pool if it exists.
//Use multi_array_key_exists() to handle the task
//It should return something like "fruit:mango:apple_mango"
//Then dynamically call $options_pool based on the data. Like so: $options_pool[ 'fruit' ][ 'mango' ][ 'apple_mango' ] = $value;
$match_key = multi_array_key_exists($name, $options_pool);
$option_keys = explode(':', $match_key);
$option_keys_length = count($option_keys);
$option_name_array = array();
if(0 < $option_keys_length) {
for($c = $option_keys_length; $c > 0; $c--) {
$sub_keys = '$options_pool';
for($c_sub = 0; $c_sub < $c ; $c_sub++) {
$sub_keys .= '[ $option_keys[ '. $c_sub . ' ] ]';
}
$option_name_array[] = $sub_keys;
}
foreach($option_name_array as $f_var_name) {
//the following line should equal to: $options_pool[ 'fruit' ][ 'mango' ][ 'apple_mango' ] = $value;
$f_var_name = $value;
}
}
}
//The $options_pool array
$options_pool = array('car' => '', 'animals' => '', 'fruit' => array('mango' => array('apple_mango' => ''));
私はロジックは、コードのこの部分があることを除いて正しいと思いますか?私は
$f_var_name
の値を印刷してテストしましたが、結果は正しいですが実際には配列を呼び出さないのですか?
PHPのforeachコンストラクトは、指定された配列のコピーで動作します。 [詳細はこちら](http://php.net/manual/en/control-structures.foreach.php) –
これにはどのような回避策がありますか?私はそれをもっと明確にするために私の質問を更新しました。 – Joann