使用以下数据包含此数据。 我怎样才能向每个人展示一次,然后展示每个人的第一项活动。 我可以使用array_unique()函数,但这也删除了Activity重复项。 我只需要删除那些人的副本。
mainArray = array(
'person' => '1', 'Activity' => 'abc',
'person' => '1', 'Activity' => 'cba',
'person' => '2', 'Activity' => 'abc',
'person' => '2', 'Activity' => 'cba',
'person' => '3', 'Activity' => 'cba');
我想要这个结果:
person 1 - Activity abc
person 2 - Activity abc
person 3 - Activity cba
抱歉我的阵列看起来像这样:
Array ( [0] => Array ( [Person] => 1 [Activity] => 1 )
[1] => Array ( [Person] => 1 [Activity] => 2 )
[2] => Array ( [Person] => 2 [Activity] => 1 )
答案 0 :(得分:1)
查看您的数组是否像这样
$mainArray = Array
(
[0] => Array
(
[person] => 1
[Activity] => abc
)
[1] => Array
(
[person] => 1
[Activity] => cba
)
[2] => Array
(
[person] => 2
[Activity] => abc
)
[3] => Array
(
[person] => 2
[Activity] => cba
)
[4] => Array
(
[person] => 3
[Activity] => cba
)
)
然后这是您的解决方案:
$unique_array = array();
$count = 0;
foreach ($mainArray as $array){
$insert = false;
if(!empty($unique_array)){
foreach($unique_array as $u){
if($u['person'] != $array['person'])
$insert = true;
else
$insert = false;
}//End of Foreach
}else
$insert = true;
if($insert){
$unique_array[$count]['person'] = $array['person'];
$unique_array[$count]['Activity'] = $array['Activity'];
$count++;
}
}
答案 1 :(得分:0)
您不能拥有两个或更多具有相同键的值;如果两个键相同,你怎么能单独访问一个单独的键的值?
<?php
$mainArray = array(
'person' => '1', 'Activity' => 'abc',
'person' => '1', 'Activity' => 'cba',
'person' => '2', 'Activity' => 'abc',
'person' => '2', 'Activity' => 'cba',
'person' => '3', 'Activity' => 'cba');
print_r($mainArray);
?>
以上代码输出以下内容:
Array ( [person] => 3 [Activity] => cba )
// Only the last unique key-value pair is stored in the array
因此,您可能希望以与此类似的格式存储值:
$mainArray = array(
'person' => array('1', '1', '2', '2', '3'),
'Activity' => array('abc','cba','abc','cba','cba')
);
这样,您也可以更轻松地获取Activity
的相应值(person
)。