我有一堆php数组,看起来像这样(请不要问为什么,我只是在做我的工作…我要说的是EAV…):
$firstNames = ([accountId] => 100, [firstName] => 'John'
[accountId] => 101, [firstName] => 'Fred');
$lastNames = ([accountId] => 100, [lastName] => 'Doe'
[accountId] => 101, [lastName] => 'Bloggs');
$city = ([accountId] => 100, [city] => 'New York'
[accountId] => 101, [city] => 'Cambridge');
$country = ([accountId] => 100, [country] => 'USA'
[accountId] => 101, [country] => 'UK');
等等
我必须将它们组合成一个数组:
$userDetails = ([accountId] => 100, [firstName] => "John", [lastName] => "Doe",
[city] => "New York", [country] => "USA");
我的感觉是,正确的答案是将这些属性从EAV中分解出来,并对其进行正确的建模。但我做不到。在数据库中进行自联接时也可以进行自联接,但我已经简化了这个例子,但这实际上是不可能的——我被告知要这样做。。。稍后可能还会附加一些字段。
那么,在PHP中,在accountId上进行合并,生成一个关联数组的最佳方式是什么呢?有函数吗,或者我需要循环循环等等。
这个嵌套的foreach
应该做到:
$result = array();
foreach (array('firstNames' => 'firstName', 'lastNames' => 'lastName', 'city' => 'city', 'country' => 'country') as $srcArr => $arrKey) {
foreach ($$srcArr as $item) {
if (!isset($result[$item['accountId']])) {
$result[$item['accountId']] = $item;
} else {
$result[$item['accountId']][$arrKey] = $item[$arrKey];
}
}
}
var_dump($result);
查看它的工作