1

API から動的に取得しているこのデータを処理しようとしています。idが常に一意であることはわかっていますが、 がname互いに一致することが多く、これが問題です。PHP を使用して、この配列からname前のオブジェクトの値と同一のstdClass オブジェクトを削除するにはどうすればよいですか? nameこれらのstdClassオブジェクトには他のデータがあるため、特にチェックを0から最高値まで進めたいと思っています。1この場合、その名前は さんの名前と一致するため、削除したいと思います0が、その後、明らかな理由により、現在あるものを2新しいものにする必要があります。1

Array
(
    [0] => stdClass Object
        (
            [id] => 6969
            [name] => Steve Jobs
        )
    [1] => stdClass Object
        (
            [id] => 2013
            [name] => Steve Jobs
        )
    [2] => stdClass Object
        (
            [id] => 1234
            [name] => The Woz
        )
)

ありがとう!

4

3 に答える 3

10

これを行うために使用できますarray_filter

$objects = array(
    (object)array('id' => 1, 'name' => 'test1'),
    (object)array('id' => 2, 'name' => 'test2'),
    (object)array('id' => 3, 'name' => 'test1'),
);
$known = array();
$filtered = array_filter($objects, function ($val) use (&$known) {
    $unique = !in_array($val->name, $known);
    $known[] = $val->name;
    return $unique;
});

このフィドルをチェックしてください

于 2013-08-06T07:40:11.583 に答える