1

これが配列です

Array
(
    [0] => Array
        (
            [artist] => John Keys
            [postID] => 254
        )

    [1] => Array
        (
            [artist] => Jay Bloom
            [postID] => 249
        )

    [2] => Array
        (
            [artist] => John Keys
            [postID] => 216
        )

    [3] => Array
        (
            [artist] => Angie Belle
            [postID] => 225
        )
)

アーティスト要素のみからすべての重複を削除したいと思います。0 と 2 のアーティストは同じですが、postID が異なることに注意してください。アーティストの最初の出現を保持し、他のすべてを削除したいだけです。だから私がしたい結果は

Array
(
    [0] => Array
        (
            [artist] => John Keys
            [postID] => 254
        )

    [1] => Array
        (
            [artist] => Jay Bloom
            [postID] => 249
        )
    [2] => Array
        (
            [artist] => Angie Belle
            [postID] => 225
        )
)

私はarray_uniqueを試し、またarray_mapをシリアライズして実行しましたが、何も正しく機能していないようです。

4

3 に答える 3

2
<?php
$array = Array
(
    '0' => Array
        (
            'artist' => 'John Keys',
            'postID' => 254
        ),

    '1' => Array
        (
            'artist' => 'Jay Bloom',
            'postID' => 249
        ),

    '2' => Array
        (
            'artist' => 'John Keys',
            'postID' => 216
        ),

    '3' => Array
        (
            'artist' => 'Angie Belle',
            'postID' => 225
        )
);
$newarray = array();
foreach($array as $key => $val){
  if(!array_key_exists('artist', $newarray)){
    $newarray[$val['artist']] = $val;
  }
}
echo '<pre>';
print_r($newarray);

編集:数字キーを使用:

$newarray = array();
$temp = array();

foreach($array as $key => $val){

   if(!in_array($val['artist'], $temp)){
    $temp[] = $val['artist'];
   }
   if( !array_key_exists(array_search($val['artist'], $temp), $newarray) ){
    $newarray[array_search($val['artist'], $temp)] = $val;
   }

}
于 2013-02-19T05:30:33.700 に答える
2

簡単なアプローチ:

$result = array();

foreach ($input as $item) {
    if (!array_key_exists($item['artist'], $result)) {
        $result[$item['artist']] = $item;
    }
}
于 2013-02-19T05:29:39.630 に答える
-1
    <?php
    $a=array(
        "0" => array
            (
                "artist" => "John Keys",
                "postID" => "254"
            ),

       "1" => array
           (
              "artist" => "Jay Bloom",
              "postID" => "249"
           ),

        "2" => array
            (
               "artist" => "John Keys",
               "postID" => "216"
            ),

        "3" => array
            (
               "artist" => "Angie Belle",
               "postID" => "225"
            )
          );



     var_dump($a);

    for($i=0;$i<count($a);$i++)
    {
for($j=$i+1;$j<count($a); $j++)
{

    $tmp1=$a[$i]["artist"];
    $tmp2=$a[$j]["artist"];

    if($tmp1==$tmp2)
    { 

        unset($a[$j]);

    }
    $tmp3=array_values($a);

    $a=$tmp3;
  }


      }

    var_dump($a);
    ?>
于 2013-02-19T06:37:55.943 に答える