Muszę tylko sprawdzić, czy tablica ma więcej niż jeden element. Próbuję to zrobić w ten sposób:
if (isset($arr['1']))
inny tradycyjny sposób to
if (sizeof($arr)>1)
Który z nich jest lepszy? W takich sytuacjach, jak powinienem dokonać oceny między dwoma alternatywnymi metodami? Czy jest dostępny miernik wydajności do pomiaru, który jest lepszy?
Odpowiedzi:
Użyj tego
Lub
sizeof()
jest aliasem dlacount()
, działają tak samo.Edycja: Odpowiadając na drugą część pytania: Dwie linie kodów w pytaniu nie są metodami alternatywnymi, pełnią różne funkcje. Pierwsza sprawdza, czy
$arr['1']
ustawiona jest wartość at , a druga zwraca liczbę elementów w tablicy.źródło
if (sizeof($arr))
przetłumaczony naif (sizeof($arr) == 1)
- oczywiście to nie sprawdza, czy tablica ma więcej niż jeden element. Ta odpowiedź jest prawidłowa i nie widzę powodu, aby głosować przeciw, stąd mój głos za.if(is_array($arr) && count($arr) > 1)
Aby mieć pewność, że $ arr jest rzeczywiście tablicą.
sizeof
jest aliasemcount
, wolę używać count, ponieważ:źródło
$arr
jest ciągiem znaków, zwróci1
.sizeof()
jest aliasem dlacount()
. Oba działają również z nie-tablicami, ale zwracają tylko wartości większe niż 1, jeśli argument jest tablicą lubCountable
obiektem , więc jesteś z tym całkiem bezpieczny.źródło
Oczywiście użycie
count($arr) > 1
(sizeof
jest tylko aliasem dlacount
) jest najlepszym rozwiązaniem. W zależności od struktury Twojej tablicy może być mnóstwo elementów, ale żaden$array['1']
element.źródło
Posługiwać się
count()
ta strona wyjaśnia to całkiem dobrze http://phparraylength.com/
źródło
Wolę
count()
funkcję zamiastsizeOf()
, jaksizeOf()
to tylko aliasemcount()
i nie oznacza to samo w wielu innych językach. Wielu programistów oczekujesizeof()
zwrotu ilości przydzielonej pamięci.źródło
sizeof
porównaniucount
Do sprawdzania tablicy pustej () jest lepsze niż sizeof ().
Jeśli tablica zawiera ogromną ilość danych. Policzenie rozmiaru tablicy zajmie więcej czasu. Ale sprawdzenie pustego jest zawsze łatwe.
źródło
isset () sprawdza tylko, czy zmienna jest ustawiona. Nie ma nic wspólnego z rozmiarem ani z tym, co zawiera tablica
źródło
Zakładam, że $ arr jest tablicą, to właśnie tego szukasz
źródło
Pierwsza metoda
if (isset($arr['1']))
nie będzie działać na tablicy asocjacyjnej.Na przykład poniższy kod wyświetla „Nie, nie więcej niż jeden”.
źródło
Robię pętlę tablicy i odpowiednio wypełniam wartości domyślne w Swift 4/5
źródło