繁体   English   中英

是否可以在没有关联键的情况下使用 array_merge_recursive?

[英]Is it possible to use array_merge_recursive without assoc keys?

鉴于我有以下请求数据:

$request = [
    'name' => ['John Doe', 'Jane Doe', 'Janie Doe'],
    'email' => ['john@doe.com', 'jane@doe.com', 'janie@doe.com'],
    'password' => ['john123', 'jane123', 'janie123'],
];

我想让它看起来像这样:

array:3 [▼
  0 => array:3 [▼
    0 => "John Doe"
    1 => "john@doe.com"
    2 => "john123"
  ]
  1 => array:3 [▼
    0 => "Jane Doe"
    1 => "jane@doe.com"
    2 => "jane123"
  ]
  2 => array:3 [▼
    0 => "Janie Doe"
    1 => "janie@doe.com"
    2 => "janie123"
  ]
]

当我使用 array_merge_recursive();

$result = array_merge_recursive($request['name'], $request['email'], $request['password']);

$result看起来像这样。

array:9 [▼
  0 => "John Doe"
  1 => "Jane Doe"
  2 => "Janie Doe"
  3 => "john@doe.com"
  4 => "jane@doe.com"
  5 => "janie@doe.com"
  6 => "john123"
  7 => "jane123"
  8 => "janie123"
]

但是,当我像这样为我的所有值添加前缀时:

$request = [
    'name' => [
        'user_0' => 'John Doe',
        'user_1' => 'Jane Doe',
        'user_2' => 'Janie Doe',
    ],
    'email' => [
        'user_0' => 'john@doe.com',
        'user_1' => 'jane@doe.com',
        'user_2' => 'janie@doe.com',
    ],
    'password' => [
        'user_0' => 'john123',
        'user_1' => 'jane123',
        'user_2' => 'janie123',
    ],
];

下面的相同代码给了我一个非常不同的结果。

$result = array_merge_recursive($request['name'], $request['email'], $request['password']);

看起来像这样:

array:3 [▼
  "user_0" => array:3 [▼
    0 => "John Doe"
    1 => "john@doe.com"
    2 => "john123"
  ]
  "user_1" => array:3 [▼
    0 => "Jane Doe"
    1 => "jane@doe.com"
    2 => "jane123"
  ]
  "user_2" => array:3 [▼
    0 => "Janie Doe"
    1 => "janie@doe.com"
    2 => "janie123"
  ]
]

因此,如果我要遍历我的请求并为键添加前缀,我可以简单地使用array_merge_recursive() 但这是多余的,因为我已经在循环我的请求值,并且可以在循环期间简单地将它们分配给手工制作的$results

有什么秘诀可以让array_merge_recursive()像我想要的那样工作吗?

使用array_map() ,如果你传入 null 作为回调,你可以得到它来组合 arrays,来自手册......

NULL可以作为一个值传递给回调,对多个arrays执行zip操作。如果只提供array1,array_map()将返回输入数组。

$result = array_map(null, $request['name'], $request['email'], $request['password']);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM