我需要有关如何从一组数组中删除一个或多个数组子项的帮助,这些数组与PHP中的其他子项具有完全相同的键和值。请看一下这个数组:
Array
(
[0] => Array
(
[scn_fr_tm] => 10:35
[scn_to_tm] => 12:55
[mov_prnt_nm] => Thor Ragnarok
)
[1] => Array
(
[scn_fr_tm] => 10:40
[scn_to_tm] => 12:39
[mov_prnt_nm] => Geostorm
)
[2] => Array
(
[scn_fr_tm] => 11:30
[scn_to_tm] => 13:22
[mov_prnt_nm] => One Fine Day
)
[3] => Array
(
[scn_fr_tm] => 11:30
[scn_to_tm] => 13:22
[mov_prnt_nm] => One Fine Day
)
[4] => Array
(
[scn_fr_tm] => 11:30
[scn_to_tm] => 13:00
[mov_prnt_nm] => Total Chaos
)
[5] => Array
(
[scn_fr_tm] => 11:30
[scn_to_tm] => 13:22
[mov_prnt_nm] => One Fine Day
)
)
从上面的数组中我可以看到,我想从数组中删除数组[3]和数组[5],因为它有重复的键和数组[2]的值。上面的数组是动态创建的,所以请不要让我使用unset(array[3])
和unset(array[5])
。
这是我的数组创建代码,从其他数组创建的数组:
foreach ($datas as $data)
{
if (array_key_exists('attr', $data))
{
$arr[] = array(
'scn_fr_tm' => substr_replace($data['attr'][0]['scn_fr_tm'],':',2,0),
'scn_to_tm' => substr_replace($data['attr'][0]['scn_to_tm'],':',2,0),
'mov_prnt_nm' => substr($data['mov_prnt_nm'], 0, 20)
);
}
}
感谢您的帮助
答案 0 :(得分:1)
我想到了几个不同的选择:
$unique = array_map('unserialize', array_unique(array_map('serialize', $array)));
或
while ($item = array_pop($array)) {
if (!in_array($item, $array)) {
$unique[] = $item;
}
}