-1

このデータを含む次の配列を用意します。すべての人に一度だけ表示してから、すべての人の最初のアクティビティを表示するにはどうすればよいですか。array_unique() 関数を使用できますが、これによりアクティビティの重複も削除されます。人物の重複を削除するだけです。

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 )
4

2 に答える 2

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++;
 }
}
于 2013-06-16T09:42:50.723 に答える