Ze względu na dziwny zestaw okoliczności muszę określić, czy wartość istnieje w znanym zestawie, a następnie podjąć działanie. Rozważać:

Dołączony plik będzie wyglądał następująco:

// Start generated code
$set = array();
$set[] = 'foo';
$set[] = 'bar';
// End generated code

Wtedy inny plik będzie wyglądał następująco:

require('that_last_file.php');

if(in_array($value, $set)) {
  // Do thing
}

Jak wspomniano, tablica zostanie utworzona z wygenerowanego kodu - proces utworzy plik PHP, który zostanie umieszczony nad instrukcją if z require.

Jak bardzo powinienem przejmować się rozmiarem tego bałaganu - zarówno w bajtach, jak i wartościach tablicowych? Z łatwością może osiągnąć 5000 wartości. Jak bardzo powinienem się przejmować narzutem tablicy o wartości 5000? Czy istnieje skuteczniejszy sposób wyszukiwania wartości, inny niż użycie in_array w tablicy? Jak bolesne jest dołączenie pliku zawierającego 5000 wierszy za pośrednictwem require?

Wiem, że istnieją lepsze sposoby na zrobienie tego, ale moje ograniczenia polegają na tym, że tworzenie zestawu i logika muszą znajdować się w dołączonym pliku PHP. Istnieją dziwne ograniczenia techniczne, które uniemożliwiają inne opcje (np. - przeszukiwanie bazy danych).

1
Deane 19 listopad 2019, 17:31
4
"Jak powinienem być zaniepokojony rozmiarem tego bałaganu - zarówno w bajtach, jak i wartościach tablicy?" - pomijalnie zaniepokojony
 – 
Sean Bright
19 listopad 2019, 17:33
1
Jak powiedział @SeanBright, nie powinieneś się przejmować ze względu na rozmiar tablicy. Jedyny problem może wynikać z wielkości poszczególnych wartości, jeśli są naprawdę duże, ale w takim przypadku 100 elementów czy 10000 elementów to nie ma znaczenia.
 – 
Martin Dimitrov
19 listopad 2019, 17:36
2
Jeśli naprawdę się martwisz, powiedziałbym, że przetestuj. Prawdopodobnie okaże się, że nie ma się czym martwić. Jedynym „prawdziwym” ograniczeniem jest dostępna pamięć.
 – 
Dave
19 listopad 2019, 17:38
1
Uwielbiam te statystyki, dziękuję. Ale właściwie nie ustawiam kluczy, tylko wartości. Czy to ma znaczenie? Jeśli nie określę klucza, tylko wartość, co zostanie ustawione jako klucz? Jeśli sprawdzanie kluczy jest szybsze, czy powinienem zrobić coś takiego jak $set['foo'] = true; ?
 – 
Deane
19 listopad 2019, 18:11

1 odpowiedź