From 090f06899483c2019a98fd07d4a30e58cf698642 Mon Sep 17 00:00:00 2001 From: lacatoire Date: Tue, 1 Sep 2026 10:16:09 +0200 Subject: [PATCH] [Sync-En] in_array(): clarify the loose comparison behaviour as of PHP 8.0 --- reference/array/functions/in-array.xml | 29 +++++++++++++++++--------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/reference/array/functions/in-array.xml b/reference/array/functions/in-array.xml index b63b530ca..cdf27278d 100644 --- a/reference/array/functions/in-array.xml +++ b/reference/array/functions/in-array.xml @@ -1,6 +1,5 @@ - - + in_array @@ -55,14 +54,24 @@ coincide con el tipo del valor encontrado en haystack. - - Antes de PHP 8.0.0, un string needle coincidirá - con un valor de array de 0 en modo no estricto y viceversa. - Esto puede llevar a resultados no deseados. - Casos similares también existen para otros tipos. - Si no se está absolutamente seguro de los tipos de valores involucrados, - siempre se debe utilizar el flag strict para evitar cualquier comportamiento inesperado. - + + Anterior a PHP 8.0.0, un needle de tipo + string no numérico coincidía de forma laxa con un valor + 0 de haystack, y viceversa. A + partir de PHP 8.0.0, el número se convierte a string y + ambos se comparan como strings, de modo que solo sigue coincidiendo una + string numérica con el mismo valor. + + + No obstante, el modo no estricto utiliza una + comparación laxa, por lo + que valores de tipos distintos pueden seguir considerándose iguales: + &true; coincide con cualquier string evaluada como + verdadera, y &false; coincide tanto con "" como con + "0". A menos que se conozcan con certeza los tipos de + todos los valores involucrados, se debe pasar siempre + strict para forzar una comparación de identidad. +