Tengo una matriz y quiero averiguar si hay al menos un valor falso en ella. Estaba pensando en crear una función array_and()
, que solo realiza un Y lógico en todos los elementos. Volvería a ser verdadero si todos los valores son verdaderos, de lo contrario falso. ¿Estoy sobreingeniería?Matriz AND()? Logical ANDing de todos los elementos
Respuesta
¿Por qué no sólo tiene que utilizar
in_array
- Comprueba si existe un valor en una matriz
Ejemplo:
// creates an array with 10 booleans having the value true.
$array = array_fill(0, 10, TRUE);
// checking if it contains a boolean false
var_dump(in_array(FALSE, $array, TRUE)); // FALSE
// adding a boolean with the value false to the array
$array[] = FALSE;
// checking if it contains a boolean false now
var_dump(in_array(FALSE, $array, TRUE)); // TRUE
Gracias, sabía que estaba pensando demasiado :) – user151841
@usuario solo para aclarar: por "valor falso" en realidad quieres decir que quieres comprobar si hay un * booleano falso * en la matriz, ¿verdad? – Gordon
Sí, esta es una situación en la que sería booleana 'FALSE', ¿pero se puede generalizar a la verificación de tipos sueltos de PHP? Para la verificación de tipo suelto, tendría que usar una función, ¿no? – user151841
No hay nada malo con esto, en principio, siempre como no lo haces Y todos los valores indiscriminadamente; es decir, que debe terminar tan pronto como el primer false
se encuentra:
function array_and(array $array)
{
foreach ($array as $value)
{
if (!$value)
{
return false;
}
}
return true;
}
volvería cierto si todos los valores son verdaderos, de lo contrario falso.
devuelve verdadero si la matriz es no vacía y no contiene elementos falsos:
function array_and(arary $arr)
{
return $arr && array_reduce($arr, function($a, $b) { return $a && $b; }, true));
}
(. Tenga en cuenta que se necesita comparación estricta si quería probar contra el tipo false
)
¿Estoy sobre-ingeniería?
Sí, porque se puede utilizar:
in_array(false, $arr, true);
que debe ser capaz de aplicar una pequeña función que toma una matriz y se itera sobre cada miembro de comprobación para ver si es falsa. Devolver un bool de la función basada en el resultado de su visita ....
Fácil, pero fea => O (N)
$a = array(1, 2, false, 5, 6, 'a');
$_there_is_a_false = false
foreach ($a as $b) {
$_there_is_a_false = !$b ? true : $_there_is_a_false;
}
otra opción: array-filter
Por qué no sólo tiene que utilizar array_product()
$ set = array (1,1,1,1,0,0);
$ result = array_product ($ set);
de salida: 0
Y lógico es esencialmente un multiplicador.
1 * 1 = 1
1 * 0 = 0
0 * 1 = 0
0 * 0 = 0
- 1. php: secuencia de concatenación en todos los elementos de matriz
- 2. método genérico para imprimir todos los elementos de una matriz
- 3. Rails 3 eliminar todos los elementos de una matriz
- 4. elemento de la matriz envolver todos los elementos
- 5. Obtener todos los elementos, pero el primero de una matriz
- 6. Escriba check en todos los elementos de la matriz
- 7. Obtener todos los elementos de opciones seleccionados de todos los elementos seleccionados en un formulario
- 8. Mostrar todos los elementos en una matriz json
- 9. ¿System.Linq.Enumerable.Reverse copia todos los elementos internamente en una matriz?
- 10. Cadena reemplazar todos los elementos en la matriz PHP
- 11. Mostrar todos los elementos en la matriz usando jquery
- 12. todos los elementos en una lista
- 13. Obtener todos los elementos iframe
- 14. ListBox seleccione todos los elementos
- 15. Ruby: la matriz A contiene todos los elementos de la matriz B
- 16. cambiar todos los elementos de la matriz hasta un nivel en una matriz multidimensional
- 17. Makefile ifeq logical o
- 18. Makefile ifeq logical AND
- 19. ¿Cómo comprobar si todos los elementos de una matriz son los mismos, en matlab?
- 20. ¿Cómo eliminar todos los elementos de ListBox?
- 21. Eliminar todos los elementos de una lista
- 22. Eliminar todos los elementos dentro de linearlayout
- 23. Seleccionar todos los elementos dentro de ListView
- 24. Obtener todos los elementos de un ArrayAdapter
- 25. desactivar todos los elementos de HTML
- 26. jQuery selecciona todos los elementos dentro de elementos principales particulares
- 27. ¿Cómo multiplico todos los elementos en una colección con todos los elementos en otra colección?
- 28. matriz Uno de los elementos de estructura
- 29. ¿Cómo comparo todos los elementos de dos matrices?
- 30. Posicionamiento CSS Sobre todos los elementos
Eso es una operación perfectamente válida para hacerlo, y si PHP no lo tiene incorporado, puede hacerlo fácilmente con 'array_reduce' (o' fold', ya que esta función de orden superior se llama más comúnmente). – delnan
@delnan: Esto requiere iteración en toda la matriz, sin embargo, independientemente de si incluso contiene un 'verdadero', y mucho menos si se encuentra un' falso' antes del final de la matriz. –
@Will: Sí, lástima de mí: X – delnan