LoginSignup
0
0

More than 3 years have passed since last update.

array_merge_recursiveで文字列が配列になる

Posted at

array_merge_recursiveではまったのでメモ。

デフォルト値に対してPOSTされてきた値で上書きするって感じで下記の様なコードを書いてみました。

$default = [
    'Model' => [
        'title' => 'DefaultTitle'
    ]
];
$post = [
    'Model' => [
        'title' => 'PostTitle',
        'user_name' => 'Ryuji'
    ]
];
var_dump(array_merge_recursive($default, $post));

期待してる結果は下記のような感じだったんですが…

array(1) {
  ["Model"]=>
  array(2) {
    ["title"]=> 
    string(9) "PostTitle"
    ["user_name"]=> 
    string(5) "Ryuji"
  }
}

結果はこちら

array(1) {
  ["Model"]=>
  array(2) {
    ["title"]=>
    array(2) {
      [0]=>
      string(12) "DefaultTitle"
      [1]=>
      string(9) "PostTitle"
    }
    ["user_name"]=>
    string(5) "Ryuji"
  }
}

title が配列になって "DefaultTitle" と "PostTitle" が入ってきました^^;

この例だと array_merge で十分だけど、2階層目のキーの有無が増えると、array_mergeだと足りないのよね…

このときはCakePHP2だったんで、Hash::mergeつかってやりたいことは実現できたけど、なかったら自前で処理するのをつくらないとダメですかねぇ。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0