我在Google上找不到它,或者使用了错误的关键字。如何将变量值[[contestant variable_number -fieldname]”合并到多维数组?
数组示例:
array (
[contestant1-gender] => M
[contestant1-first-name] => Wyatt
[contestant1-last-name] => Heath
[contestant1-occupation] => Ipsa architecto vol
[contestant1-email] => dipuxo@mailinator.com
[contestant1-phone] => +1 (992) 741-8123
[contestant2-gender] => M
[contestant2-first-name] => Leonard
[contestant2-last-name] => Acosta
[contestant2-occupation] => Aut sunt qui offici
[contestant2-email] => sajomogylu@mailinator.com
[contestant2-phone] => +1 (462) 687-8393
[department] => In mollitia impedit
[street] => Sed error magnam obc
[number] => 41
[bus] => In iste ut perspicia
[postalcode] => Commodo impedit vol
[city] => Ad iure veniam veli
[country] => nl
)
对于这样的事情:
Array (
[0] => contestant (
[0] => gender ( )
[1] => first-name ()
)
[1] => contestant (
[0] => gender ( )
[1] => first-name ()
)
[2] => contestant (
[0] => gender ( )
[1] => first-name ()
)
)
答案 0 :(得分:1)
我认为这至少近似于您正在寻找的目标:
$array = [
'contestant-1-gender' => 'M',
'contestant-1-first-name' => 'Wyatt',
'contestant-1-last-name' => 'Heath',
'contestant-1-occupation' => 'Bl;ah blah',
'contestant-2-gender' => 'M',
'contestant-2-first-name' => 'Leonard',
'contestant-2-last-name' => 'Acosta',
'contestant-2-occupation' => 'Foo',
'department' => 'Who cares?'
];
$contestants = [];
array_walk($array, function($val, $key) use (&$contestants) {
if (preg_match('/contestant\-(?P<id>[\d+])\-(?P<field>.*)/', $key, $matches))
{
$contestants[$matches['id']][$matches['field']] = $val;
}
});
print_r($contestants);
输出:
Array
(
[1] => Array
(
[gender] => M
[first-name] => Wyatt
[last-name] => Heath
[occupation] => Bl;ah blah
)
[2] => Array
(
[gender] => M
[first-name] => Leonard
[last-name] => Acosta
[occupation] => Foo
)
)