C'è un modo semplice per verificare se tutti gli elementi di un array sono istanze di un tipo specifico senza eseguire il ciclo di tutti gli elementi? O almeno un modo semplice per ottenere tutti gli elementi di tipo X da una matrice.Digitare il check in tutti gli elementi dell'array
risposta
Non è possibile ottenere questo risultato senza controllare tutti gli elementi dell'array, ma è possibile utilizzare le funzioni dell'array incorporato per aiutarvi.
È possibile utilizzare array_filter
a restituire un array. È necessario fornire la propria funzione di callback come secondo argomento per verificare la presenza di un tipo specifico. Questo verificherà se i numeri dell'array sono pari a.
function even($var){
return(!($var & 1));
}
// assuming $yourArr is an array containing integers.
$newArray = array_filter($yourArr, "even");
// will return an array with only even integers.
Come per il commento di VolkerK, come di PHP 5.3+ si può anche passare in una funzione anonima come secondo argomento. Questo è l'equivalente dell'esempio sopra.
$newArray = array_filter($yourArr, function($x) { return 0===$x%2; });
C'è un modo semplice per verificare se tutti gli elementi di un array [qualcosa qualcosa di qualcosa] senza eseguire il ciclo di tutti gli elementi?
No. Non è possibile controllare tutti gli elementi di un array senza controllare tutti gli elementi della matrice.
Sebbene sia possibile utilizzare array_walk
per salvare autonomamente la scrittura della caldaia.
È possibile anche combinare array_walk
con create_function
e utilizzare una funzione anonima per filtrare l'array. Qualcosa alon le linee di:
$filtered_array = array_filter($array, create_function('$e', 'return is_int($e)'))
$s = array("abd","10","10.1");
$s = array_map(gettype , $s);
$t = array_unique($s) ;
if (count($t) == 1 && $t[0]=="string"){
print "ok\n";
}
Ho effettivamente utilizzato la soluzione di filtro in quanto le mie esigenze modificate da questa risposta sono grandi! Che in realtà rispondono completamente alla domanda iniziale ed è davvero utile per la convalida Grazie – DiogoNeves
Credo che i gettype debbano essere messi tra parentesi. – untill
- 1. GHC 7.8 sostituzione vincolante non riesce a digitare il check
- 2. avvolgere tutti gli elementi tra due elementi
- 3. Ottenere tutti gli elementi iframe
- 4. serie di elementi avvolgere tutti gli elementi
- 5. Moltiplica tutti gli elementi nell'array
- 6. Sostituisci tutti gli elementi in Knockout.js osservabileArray
- 7. Seleziona tutti gli elementi in una pagina
- 8. Java 8 stream. tutti gli elementi TRANNE gli altri elementi
- 9. quadratura tutti gli elementi in una lista
- 10. disabilitare tutti gli elementi in HTML
- 11. Il selenio ottiene tutti gli elementi in un modulo
- 12. Recupero di tutti gli elementi con DynamoDBMapper
- 13. Come attivare eventi su tutti gli elementi
- 14. Come digitare check per la classe base istanza enum?
- 15. Tutti gli elementi di archiviazione locali
- 16. Come faccio a moltiplicare tutti gli elementi in una raccolta con tutti gli elementi in un'altra raccolta?
- 17. Posizionamento CSS Sopra tutti gli elementi
- 18. jquery: selezionare tutti gli elementi dopo l'n.
- 19. Eliminare tutti gli elementi da un elenco
- 20. Visualizza tutti gli elementi nell'array utilizzando jquery
- 21. Rimuovi tutti gli elementi all'interno di linearlayout
- 22. Formatta tutti gli elementi di un elenco
- 23. Jquery trova tutti gli elementi con il testo
- 24. jQuery seleziona tutti gli elementi all'interno di determinati elementi padre
- 25. Somma tutti gli elementi java arraylist
- 26. Seleziona tutti gli elementi all'interno di ListView
- 27. Swift aggiunge tutti gli elementi dall'array insieme
- 28. Tutti gli elementi Enum da stringa (C#)
- 29. accesso tutti gli elementi nella JTOKEN, Json.NET
- 30. XPath selezionare tutti gli elementi tra due elementi specifici
con PHP 5.3+ è anche possibile utilizzare funzioni anonime '$ newArray = array_filter ($ yourArr, function ($ x) {return 0 === $ x% 2; }); ' – VolkerK
Il secondo esempio è fuorviante. Implica che l'implementazione dalla funzione 'even' nel primo esempio non possa essere utilizzata in una funzione anonima. Un ** _ true _ ** equivalente che utilizza una funzione anonima è: '$ newArray = array_filter ($ yourArr, function ($ x) {return (! ($ X & 1));});' –