Muszę sprawdzić duże tablice, aby sprawdzić, czy są w 100% wypełnione wartościami liczbowymi. Jedyny sposób, który przychodzi mi do głowy to foreach, a następnie jest numeryczny dla każdej wartości, ale czy jest to najszybszy sposób?Jaki jest najszybszy sposób sprawdzenia, czy wszystkie wartości w tablicy są numeryczne?
Odpowiedz
zakładając, że tablica jest jednowymiarowa i po prostu składa się z liczb całkowitych:
return ctype_digit(implode('',$array));
Musiałem cofnąć mój głos, wartości 'false' i' NULL', które zwracają fałsz dla 'is_numeric()' są implodowane tutaj jako puste ciągi, uciekając 'ctype_digit()'. – BoltClock
@BoltClock: OP zapewnia, że tablica jest "w 100% wypełniona wartościami numerycznymi" – stillstanding
Myślę, że operacja implodu jest dość kosztowna w czasie. – rsk82
Najszybszym sposobem może być po prostu założyć, że są wszystkie cyfry i dalej ze swojej pracy. Jeśli twoja operacja nie powiedzie się później, to wiesz, że coś nie jest liczbą. Ale jeśli wszystkie są w rzeczywistości liczbami ... nie można uzyskać znacznie szybciej niż O (0)!
Jednak niektóre wartości nieliczbowe prześlizgną się przez wsunięcie/autokonfigurowanie. Założenie nie jest bezpieczne. – Umbrella
Dlaczego to zostało zaakceptowane jako odpowiedź? Nie sprawdza niczego ... –
Ta mała funkcja działa dobrze dla mnie
function IsNumericarr($arr){
if(!is_array($arr)){
return false;
}
else{
foreach($arr as $ar){
if(!is_numeric($ar)){
return false;
exit;
}
}
return true;
}
}
pętla jest potrzebne
array_map("is_numeric", array(1,2,"3","hello"))
Array ([0] => 1 [1] => 1 [2] => 1 [3] =>)
if(array_reduce($array, function($c, $v){return $c & (int)is_numeric($v);}, 1))
Ta odpowiedź została automatycznie oznaczona jako niskiej jakości ze względu na jej długość i zawartość. Wyjaśnienie pomoże tej odpowiedzi bardziej przypominać odpowiedź przepełnienia stosu. – Popnoodles
Filtr tablica użyciu is_numeric. Jeśli rozmiar wyniku jest taki sam jak oryginał, wszystkie elementy są numeryczne:
$array = array(1, '2', '45');
if (count($array) === count(array_filter($array, 'is_numeric'))) {
// all numeric
}
- 1. Java - Najszybszy sposób sprawdzenia, czy URL istnieje
- 2. Jaki jest najszybszy sposób sprawdzenia duplikatów cyfr numeru?
- 3. Jaki jest najłatwiejszy/najszybszy sposób sprawdzenia, kiedy utworzono gałąź git?
- 4. najszybszy sposób określenia, czy element jest w posortowanej tablicy
- 5. Numpy: najszybszy sposób sprawdzenia, czy wszystkie elementy tablicy mają ten sam znak?
- 6. Jaki jest najlepszy i najszybszy sposób sprawdzenia, czy obraz jest poprawny w PHP?
- 7. Jaki jest najszybszy sposób przekonwertowania wartości float [] na bajt []?
- 8. Jaki jest najszybszy sposób na sprawdzenie, czy obiekt jest IEnumerable?
- 9. Najszybszy sposób sprawdzenia istnienia pliku w NodeJs
- 10. Jaki jest najszybszy sposób sprawdzenia, czy punkt znajduje się wewnątrz wielokąta w pytonie?
- 11. Jaki jest najszybszy sposób sprawdzenia, czy wejściowy ciąg znaków jest prawidłowym wyrażeniem RPN?
- 12. Jaki jest najszybszy sposób porównywania poprawek z tablicy?
- 13. Najszybszy sposób odczytywania kolumny liczb w tablicy
- 14. Jak sprawdzić, czy wszystkie wartości w tablicy są równe
- 15. Jak sprawdzić, czy wszystkie wartości w tablicy są identyczne?
- 16. Najszybszy sposób na wyzerowanie niskich wartości w tablicy?
- 17. Jaki jest najszybszy sposób przypisania zmiennych w oparciu o tablicę?
- 18. Jaki jest właściwy sposób sprawdzenia, czy Iterator jest kompletny?
- 19. Jaki jest najlepszy sposób sprawdzenia, czy URL istnieje w PHP?
- 20. Jaki jest najlepszy sposób sprawdzenia, czy krotka ma puste/Brak wartości w Pythonie?
- 21. sposób sprawdzenia, czy dwie macierze są identyczne w OpenCV
- 22. Najszybszy sposób sprawdzenia, czy punkt końcowy WCF nasłuchuje
- 23. Najszybszy sposób sprawdzenia, czy tablica zawiera te same obiekty innej tablicy.
- 24. Czy istnieje sposób sprawdzenia, czy dwa elementy DOM są równe?
- 25. Drupal 7: najszybszy sposób sprawdzenia, czy istnieje wpis db
- 26. Jaki jest najszybszy sposób na znalezienie wszystkich wystąpień podłańcucha?
- 27. W C++, jaki jest najszybszy sposób określenia, czy dwa ciągi lub pliki binarne są różne?
- 28. Jaki jest najlepszy sposób sprawdzenia, czy istnieje atrybut?
- 29. Jaki jest najłatwiejszy sposób sprawdzenia, czy są jakieś dopasowania w kilku tablicach DateTime?
- 30. Jaki jest najszybszy sposób na załadowanie danych w Matlab
* Dowolne * rozwiązanie tego problemu spowoduje zapętlenie wartości tablicowych. Niezależnie od tego, czy musisz zrobić to w kodzie, czy funkcji, to jest to dla ciebie kolejne pytanie, ale w obu przypadkach jest pętla. Sądzę więc, że wydajność powinna być prawie taka sama, niezależnie od tego, co robisz. – Joey
Co powiesz na sprawdzanie wartości przed ich wprowadzeniem do tablicy? –
To nie jest takie proste, ponieważ wartości wchodzą i wychodzą z tablicy w sposób losowy, a niektóre z nich mogą mieć wartość zerową lub fałsz lub "", a następnie muszę wykonać z nimi obliczenia, a wynik tych obliczeń musi być zerowy, jeśli niektóre dane w tablicy nie są numeryczne. – rsk82