У меня есть PHP script, который читает большой CSV и выполняет определенные действия, но только если поле "имя пользователя" уникально. CSV используется более чем в одном script, поэтому изменение ввода из CSV только с уникальными именами пользователей не является вариантом.
Самый простой поток программы (о котором мне интересно) выглядит следующим образом:
$allUsernames = array();
while($row = fgetcsv($fp)) {
$username = $row[0];
if (in_array($username, $allUsernames)) continue;
$allUsernames[] = $username;
// process this row
}
Поскольку этот CSV действительно может быть довольно большим, это бит in_array
, который заставил меня задуматься. Самая идеальная ситуация при поиске по массиву для члена - если он уже отсортирован, поэтому как вы создадите массив с нуля, сохранив его в порядке? Как только он будет в порядке, будет ли более эффективный способ его поиска, чем при использовании in_array()
, учитывая, что он, вероятно, не знает, что массив отсортирован?