Chr*_*her 5 php multidimensional-array
我一直用这个来绞尽脑汁.
我有两个数组:
数组1从CSV文件中提取.
Array
(
[0] => Array
(
[uid] => cgajate
[date] => 20120918
)
[1] => Array
(
[uid] => badrock5
[date] => 20120920
)
[2] => Array
(
[uid] => ricoetc
[date] => 20120921
)
[3] => Array
(
[uid] => ricoetc1
[date] => 20120923
)
[4] => Array
(
[uid] => darbyfired
[date] => 20120922
)
[5] => Array
(
[uid] => sagers.andrew
[date] => 20120922
)
[6] => Array
(
[uid] => frankfurt9
[date] => 20120923
)
[7] => Array
(
[uid] => beachboys
[date] => 20120923
)
[8] => Array
(
[uid] => panterafan
[date] => 20120923
)
[9] => Array
(
[uid] => kingsxrules
[date] => 20120923
)
[10] => Array
(
[uid] => richard.bitto
[date] => 20120924
)
[11] => Array
(
[uid] => christopher.boss
[date] => 20120925
)
[12] => Array
(
[uid] => eric.robinson2
[date] => 20120926
)
)
数组2从SQL数据库中提取.
Array
(
[0] => Array
(
[uid] => cgajate
[date] => 20120919
)
[1] => Array
(
[uid] => ricoetc
[date] => 20120921
)
[2] => Array
(
[uid] => ricoetc1
[date] => 20120922
)
[3] => Array
(
[uid] => frankfurt9
[date] => 20120923
)
[4] => Array
(
[uid] => beachboys
[date] => 20120923
)
[5] => Array
(
[uid] => panterafan
[date] => 20120923
)
[6] => Array
(
[uid] => kingsxrules
[date] => 20120923
)
[7] => Array
(
[uid] => eric.robinson2
[date] => 20120926
)
)
我基本上要做的是检查是否有任何UID匹配.如果有匹配,它将检查哪个日期比另一个更新(所以基本上什么日期大于).然后它会将它们添加到一个数组中,其中UID与两个数组都不匹配.
对不起,如果这很难理解.这有点难以解释.
任何和所有的帮助表示赞赏,谢谢大家提前.
由于 PHP 数组本身就是哈希映射,因此您可以迭代一个数组并将每个日期插入到一个新数组中,并以 UID 为键:
$out = array();
foreach ($first_array as $x) {
$out[$x['uid']] = $x['date'];
}
Run Code Online (Sandbox Code Playgroud)
然后,您可以迭代第二个数组,检查是否有任何 UID 已作为数组中的键存在$out。如果 UID 已经存在,那么您可以比较日期并获取您喜欢的任何数据。例如,类似:
foreach ($second_array as $y) {
if (array_key_exists($y['uid'], $out)) {
if ($out[$y['uid']] < $y['date']) {
$out[$y['uid']] = $y['date'];
}
} else {
$out[$y['uid']] = $date;
}
}
Run Code Online (Sandbox Code Playgroud)
然后,将数据展平:
$_out = array();
foreach ($out as $uid => $date) {
$_out[] = array("uid" => $uid, "date" => $date);
}
$out = $_out;
Run Code Online (Sandbox Code Playgroud)