Per funzionare correttamente le stringhe che cerchi devono essere esattamente uguali al valore del'elemento dell'array, altrimenti array_search() non ti ritorna nulla e l'unset() te lo fa sul primo elemento dell'array $dir[0] sia durante la prima che la seconda chiamata.