3v4l.org

run code in 300+ PHP versions simultaneously
<?php $array = array( array( 'id' => 12, '_from' => 1, '_to' => 2 ), array( 'id' => 13, '_from' => 4, '_to' => 2 ), array( 'id' => 14, '_from' => 2, '_to' => 1 ), ); $newArray = []; foreach ($array as $item) { $uniqueRecordKey = $item['_from'].'-'.$item['_to']; $oppositeRecordKey = $item['_to'].'-'.$item['_from']; //If exists record from the opposite and new ID is greater than previous put if (isset($newArray[$oppositeRecordKey])) { $newArray[$oppositeRecordKey] = $item; continue; //Do not append to the end } $newArray[$uniqueRecordKey] = $item; } var_dump($newArray);

preferences:
118.89 ms | 404 KiB | 5 Q