Contactos

PHP Array_Search: busque valor en la matriz. Cómo verificar la presencia de un valor en la búsqueda de matriz PHP PHP en la matriz asociativa por valor

A menudo, al escribir el código, es necesario verificar si se necesita el valor del elemento en la matriz. Hoy veremos varias funciones, con las que se puede hacer.

Comprobación de la presencia de un valor de elemento en una matriz se puede usar al resolver varias tareas en la programación.

Podemos obtener diferentes matrices de nuestra base de datos y verifique la disponibilidad de uno u otro valor en él. El valor deseado se puede transmitir desde el usuario de nuestro script cuando, por ejemplo, está buscando algo. Según los resultados de dicha búsqueda, puede hacer ciertas acciones. Sin embargo, todo depende de la tarea determinada específicamente, los algoritmos para encontrar el valor en la matriz estarán solos y los mismos.

Hoy los consideraremos.

Consulte la disponibilidad en la matriz. In_array ()

Función in_array () Permítanos verificar cualquier valor en la matriz.

Si el resultado de su operación es exitoso y se encuentra el elemento deseado en la matriz, entonces la función volverá cierto., esa es la verdad.

La función toma 2 parámetros requeridos:<Что ищем> y<Где ищем>.

También puede tomar otro parámetro opcional:<Тип данных>. Si este tercer parámetro opcional importa cierto., entonces el tipo de datos también se verifica. Es decir, '2' y 2 no serán lo mismo. En el primer caso, esta es una cadena, en la segunda. Y luego toda la característica in_array () no devolverá el valor cierto..

También es necesario recordar que la función se compara teniendo en cuenta el registro de símbolos.

Veamos el trabajo de esta función en un ejemplo simple.
Necesitamos algo de matriz. Usando una función, verifique la presencia de un valor en la matriz y visualice un mensaje específico a la pantalla.

Después de gastar la función, el mensaje "Sí" se mostrará en la pantalla, ya que el elemento "Marina" en nuestra matriz está presente.

Cambie el primer parámetro en la función en cualquier artículo inexistente, y verá el mensaje "No".

Consulte la disponibilidad en la matriz. Función array_search ()

Hay otra función para buscar. Array_search ()que, a diferencia del anterior, devolverá la clave al elemento encontrado. Esto, a su vez, puede ser útil si trabajamos con una matriz asociativa.

La función toma los mismos parámetros que la anterior. En este caso, el tercer parámetro también es opcional.

Veamos cómo se puede usar, trabajando con una matriz asociativa.

"Octubre", "DINERO" \u003d\u003e 200, "NOMBRE" \u003d\u003e "MILA"); $ KEY \u003d Array_Search ("Mila", $ MASS1); Si ($ clave) echo $ clave; ?\u003e.

En este caso, veremos en la pantalla "Nombre", es decir, la clave del elemento deseado con el valor de "MILA".

Estas dos funciones son muy similares y esencialmente difieren solo por el valor de retorno.

Búsqueda de valores en una matriz multidimensional

¿Y si trabajamos con una matriz multidimensional? Después de todo, sus elementos serán otras matrices.

Aquí ya hemos considerado que los algoritmos no funcionarán.

De hecho, todo no es tan difícil, solo necesita complicar todo el mecanismo un poco y usar el ciclo, por ejemplo, para cada ()que funciona perfectamente con matrices.

Supongamos que tenemos una matriz multidimensional. Sus valores directos son otras matrices en las que se puede contar el valor deseado del elemento.

Todo lo que quiere hacer es mover los elementos de la matriz original en el ciclo. para cada (). Cada elemento de esta matriz se desmontará a la clave ($ clave) y el valor ($ valor).

El significado será cada uno de los matrices dentro de la matriz multidimensional principal. Aquí trabajaremos con estos valores, buscando en cada matriz interna el valor deseado del elemento.

Cuando encuentre un mensaje en la pantalla que existe dicho elemento, y si no, retiraremos otro mensaje que no existe tal elemento.

Veamos todo esto en el ejemplo del código:

"Anna", "ID" \u003d\u003e 234); $ Mass2 \u003d matriz ("Nombre" \u003d\u003e "Anton", "ID" \u003d\u003e 24); $ Mass2 \u003d matriz ("nombre" \u003d\u003e "IVAN", "ID" \u003d\u003e 007); Foreach ($ mass2 como $ clave \u003d\u003e $ valor) ($ nombre. \u003d In_array ("ivan", $ valor);) Si ($ nombre) echo "¡Ok! Elemento aquí!"; Else echo "¡No tiene el elemento!"; ?\u003e.

Como puede ver, al principio declaramos la matriz multidimensional.

Al mismo tiempo, es necesario escribir no solo un signo de igualdad, sino ". \u003d".

Esto se hace para que el nombre de la variable $ no se sobrescribe en cada iteración, y complementada. Después de todo, si el elemento se encuentra en la primera iteración y el valor del nombre $ se bloqueará el valor "verdadero", y en la segunda iteración (es decir, en la segunda matriz interna) del valor deseado de El elemento, el valor de la variable de nombre de $ $ simplemente se convierte, y al final simplemente no tenemos un resultado correcto.

Como entiendes, el resultado de este código será el mensaje "¡OK! ¡Elemento aquí! ".

Trate de cambiar el elemento deseado a los inexistentes y verá el mensaje "¡No tengo elemento!".

Por supuesto, cuando encuentra o no encuentra un artículo determinado, no solo podemos mostrar mensajes, sino que realicen otras acciones. Todo depende de lo que necesites hacer. Por ejemplo, si hay un valor deseado en la matriz, puede darle al usuario alguna información específica, etc.

¡Eso es todo hoy! Espero que la lección sea comprensible y útil! Trate de escribir un código similar usted mismo para resolverlo completamente.

Y estoy esperando tus comentarios.

Comparte la lección con tus amigos usando los botones de socket. Redes ubicadas a continuación. Y también suscribirse a las actualizaciones de blogs. ¡Ya hemos recogido un archivo bastante bueno de materiales útiles, y solo se volverán a reponer!

¡Les deseo la programación exitosa!

Con usted fue Anna Kotelnikova!

(PHP 4\u003e \u003d 4.0.5, PHP 5)

array_search: busca este valor en la matriz y devuelve la tecla correspondiente si es buena suerte

Descripción

mezclado. array_search. (Aguja mixta, array pajar [, bool estricto])

Buscando en el pajar el valor de la aguja y devuelva la tecla, si es así, está presente en la matriz, Falso de lo contrario.

Comentario: Si la aguja es una cadena, se realiza una comparación dependiente del registro.

Comentario: A PHP 4.2.0, array_search () Si es posible, devuelto NULO en lugar de Falso .

Si pasas el valor Cierto. Como un tercer parámetro estricto opcional, función array_search () También revise la aguja de tipo en la matriz de pajar.

Si la aguja está presente en el pajar más de una vez, la primera clave encontrada será devuelta. Para devolver las teclas para todos los valores encontrados, use la función array_Keys () Con un parámetro de búsqueda opcional_value.


Ejemplo 1. Ejemplo de uso array_search ()

$ Array \u003d Array (0 \u003d\u003e "azul", 1 \u003d\u003e "rojo", 2 \u003d\u003e 0x000000, 3 \u003d\u003e "verde", 4 \u003d\u003e "rojo"); $ Key \u003d Array_search ("Red", $ Array ) // $ clave \u003d 1;
$ KEY \u003d Array_Search ("verde", $ matriz); // $ clave \u003d 2; (0x000000 \u003d\u003d 0 \u003d\u003d "verde")
$ KEY \u003d Array_Search ("Verde", $ Array, VERDADERO); // $ clave \u003d 3;
?>
Atención

Esta característica puede devolverse como un valor lógico. Falso y no relacionado con el valor de tipo lógico que se le da a Falso , por ejemplo, 0 o "". Para obtener más información, consulte la sección Tipo Boulev. Use la instrucción \u003d\u003d\u003d para verificar el valor devuelto por esta función.

Ya he estado usando la función Array_search () para encontrar valores en la matriz, ya que ha escuchado y leo repetidamente que funciona notablemente más rápido que la búsqueda de la matriz en el ciclo, pero lo más rápido que no sabía. Finalmente tengo las manos para comprobar y calcular.

Compare la velocidad de búsqueda en la matriz usando esta función con la superficie habitual de la matriz en foreach y mientras los ciclos. En 10-100 elementos de la matriz, la diferencia en invisible y tiempo tan poco que pueden ser adientes. Pero para grandes matrices, la diferencia fue muy significativa. Con un aumento en el tamaño de la matriz por un pedido, el tiempo de búsqueda ha aumentado significativamente. Con cien mil artículos, la velocidad de incorporación se cayó a 0.013 segundos, y mientras que, a 0.017, a pesar del hecho de que Array_Search () se desaceleró, pero aún seguía siendo un orden de magnitud más rápido: 0.004 segundos. Para un script grande que se ejecuta con grandes matrices, la reemplazo de la búsqueda en el ciclo para buscar con Array_Search () no será en absoluto la "optimización de pulgas".

En este sentido, recordé una discusión reciente con uno de los colegas en el trabajo, sobre si el programador necesita conocer todas estas funciones de lenguaje incorporado, o un "programador del programador" y el conocimiento general "Programmer. Sin salir con el razonamiento sobre este almacén de la mente, creo que todavía es necesario conocer las funciones, tal vez no toda la sintaxis en los detalles, pero aunque las funciones hay y que pueden en términos generales.

UPP: ¿Necesita un almacén programador de la mente, también se necesita! Y el cuidado con la memoria no se impide (hincapié en inspiración y rango :)

Bajo el código de script de Habacine, que calculó el tiempo:

$ Mass \u003d 100000; // el número de valores en la matriz en la que buscaremos
$ búsqueda \u003d 50,000; // en la matriz buscaremos este valor
$ first_result \u003d Array (); // Array de resultados, para calcular el valor promedio de la primera opción
$ Second_Result \u003d Array (); // Array de resultados, para calcular el valor promedio de la segunda opción
$ TIERD_RESULT \u003d Array (); // una matriz de resultados, para calcular el valor promedio de la tercera opción

// crear y llenar una matriz
$ test_array \u003d rango (0, $ mass-1); // gracias selenit))

/*
$ test_array \u003d matriz ();
para ($ i \u003d 0; $ i<$mass; $i++)
{
$ test_array \u003d $ i;
}
*/

// ciclo para contar valores medio
para ($ d \u003d 0; $ d<30; $d++) {

// *************** Búsqueda por array_search *********************

// ejecutar un conteo de tiempo
$ TIME_START \u003d MicroTime (1);
// Buscar
$ KEY \u003d Array_Search ($ búsqueda, $ test_array, verdadero);
// Si se encuentra
Si ($ KEY! \u003d\u003d FALSO) // ¡Necesitas! \u003d\u003d ¡Y NO! \u003d, porque el número del primer elemento es 0
{
Echo $ test_array [$ clave];
}
$ TIME_END \u003d MicroTime (1);
// Conteo de conteo final

// escribir en una matriz de valores
$ FIRST_RESULT \u003d $ TIME_END - $ TIME_START;

// *************** Búsqueda por matriz con un ciclo foreach *******************

// ejecutar un conteo de tiempo
$ TIME_START \u003d MicroTime (1);
// buscarse a sí mismo
foreach ($ test_array como $ ta)
{
Si ($ TA \u003d\u003d $ Buscar)
{
Echo $ ta;
Rotura;
}
}
$ TIME_END \u003d MicroTime (1);
// Conteo de conteo final

// escribir en una matriz de valores
$ Second_Result \u003d $ TIME_END - $ TIME_START;

// *************** Buscar por matriz con un ciclo mientras *********************

// ejecutar un conteo de tiempo
$ TIME_START \u003d MicroTime (1);

// Determinar la longitud de la matriz
$ Cuenta \u003d contar ($ test_array);
$ j \u003d 0;
// buscarse a sí mismo
Mientras ($ j<$count)
{
Si ($ test_array [$ j] \u003d\u003d $ Buscar) // si se encuentra
{
Echo $ test_array [$ j];
Rotura;
}
$ J ++;
}
$ TIME_END \u003d MicroTime (1);
// Conteo de conteo final

// escribir en una matriz de valores
$ TIERD_RESULT \u003d $ TIME_END - $ TIME_START;
}

$ srednee1 \u003d array_sum ($ first_result) / cuenta ($ first_result);
$ srednee2 \u003d array_sum ($ Second_Result) / Cuenta ($ Second_Result);
$ srednee3 \u003d array_sum ($ tercer_result) / cuenta ($ tercer_result);

Printf ("El primer código se realiza en promedio para:% .7f segundos", $ srednee1);
Printf ("El segundo código se realiza en promedio para:% .7f segundos", $ Srednee2);
Printf ("El tercer código se realiza en promedio para:% .7f segundos", $ srednee3);

// resultado:
// El primer código se realiza en promedio para: 0.0000295 segundos
// El segundo código se realiza en promedio para: 0.0153386 segundos
// Tercer código realizado en promedio para: 0.0226001 segundos

Una de las operaciones principales al trabajar con matrices es una búsqueda de un valor específico. Para este propósito, la función PHP Array_Search (). Es capaz de procesar colecciones de unidades unidimensionales y asociativas, devolviendo la clave del valor deseado si se encuentra en la matriz.

Sintaxis

La descripción formalizada de la función Array_Search () en PHP es la siguiente:

Array_Search mixta (valor mixto, matriz $ colección [, bool estricto])

Parámetros de entrada:

  • $ Colección: una matriz en la que se realizará la búsqueda;
  • el valor es el valor deseado de cualquier tipo;
  • estricto es un indicador lógico opcional que establece un estricto mecanismo de comparación basado en tipos.

Mecanismo de trabajo

La función PHP Array_Search () compara alternativamente el valor con todos los valores en la matriz de recolección. De forma predeterminada, la comparación se lleva a cabo sin tener en cuenta los tipos de operandos. Esta configuración se puede cambiar configurando el valor de True para la bandera. La comparación de las cadenas se lleva a cabo con respecto al registro.

Cuando se detecta la coincidencia, se devuelve la clave correspondiente al elemento encontrado, y el funcionamiento de la función se detiene. Por lo tanto, es imposible detectar la entrada múltiple del valor deseado en una matriz.

Si no se han encontrado coincidencias, la función devolverá el valor booleano FALSO.

Verifique que el resultado devuelto debe estar usando un operador de igualdad estricto (\u003d\u003d\u003d). Esto es importante, ya que la función puede devolver un valor que se le da a FALSO, por ejemplo, 0 o una cadena vacía.

Ejemplos de uso

Ejemplo 1. Cuando transmita una matriz multidimensional a la función PHP Array_Search (), el resultado del trabajo es la clave del elemento deseado.

"Invierno", "temporada2" \u003d\u003e "primavera", "temporada3" \u003d\u003e "verano", "temporada4" \u003d\u003e "otoño"); $ Result1 \u003d Array_Search ("Invierno", $ Array); $ Result2 \u003d Array_Search ("Verano", $ Array); $ Result3 \u003d Array_Search ("Abril", $ Array); ?\u003e.

En este ejemplo, la variable de $ Result1 obtendrá "Season1", $ Result2 será "Temporada3", y se le asignará a $ Result3 un valor booleano Falso, ya que la cadena "Abril" no ocurre en la matriz de origen.

Ejemplo 2. La función PHP Array_Search () también puede procesar una matriz unidimensional, contando sus claves en el orden de los índices numéricos.

La variable de resultado de $ $ se asignará a 1, de acuerdo con el índice de elementos del cazador en la matriz de Array $.

Ejemplo 3. Posible error al analizar el resultado.

"Washington", 1 \u003d\u003e "Adams", 2 \u003d\u003e "Jefferson", 3 \u003d\u003e "Madison", 4 \u003d\u003e "Monroe"); $ Result \u003d Array_Search ("Washington", $ presidentes); Si (! $ Resultado) (Echo "G. Washington no fue el primer presidente de los Estados Unidos";)?\u003e

Entonces, sin verificar el resultado resultante de la igualdad estricta, puede obtener un mensaje inesperado que George Washington no fue el primer presidente de los Estados Unidos.

Ejemplo 4. Solo se devuelve la clave de la primera coincidencia detectada.

A pesar de que el valor deseado se encuentra en la matriz tres veces, la función devolverá solo el primer resultado - 0. Para buscar múltiples coincidencias, se recomienda usar la función PHP Array_Keys ().



¿Te gustó el artículo? Compártelo