In questo articolo vedremo come individuare la posizione di un elemento in un array riordinando i risultati con PHP.

Dato un array di input e un elemento da cercare, dobbiamo restituire la posizione dell'elemento se questo è già presente nell'array o in alternativa aggiungerlo all'array e riordinare tale array effettuando quindi una nuova ricerca.

function search_insert_position($nums = [], $target = 0) {
    if(count($nums) === 0 || $target === 0) {
        return -1;
    }
    $index = array_search($target, $nums, true);
    if($index) {
        return $index;
    }
    $nums[] = $target;
    sort($nums);
    return array_search($target, $nums, true);
}

Esempio d'uso:

$tests = [
    ['nums' => [1,3,5,6], 'target' => 5],
    ['nums' => [1,3,5,6], 'target' => 2],
    ['nums' => [1,3,5,6], 'target' => 7]
];

foreach($tests as $test) {
    extract($test);
    echo search_insert_position($nums,$target) . "\n";
}