A partir de la versión 9.8 en adelante, Scriptcase y las aplicaciones generadas son compatibles con PHP 8.1.
				
			
			
				
					
						A continuación se muestran algunas funciones que ya no funcionarán o que se han modificado en PHP 8.1.
						
					
				 
				
					
				
				
					1 - Operadores ternarios anidados sin paréntesis explícitos
					
				
				
					Las expresiones condicionales de asignación, utilizadas de forma anidada, ya no están permitidas.
				
				
					
				
				
					Antes de PHP 8:
					
				
				
					$result = $aa != "" ? $xxx : isset($bb) && $bb != "" ?  $zzz : "";
					A partir de PHP 8:
					
					if ($aa != "") {
	$result = $xxx;
} elseif (isset($bb) && $bb != "") {
	$result = $zzz;
} else {
	$result = "";
}
				 
				
					2 - Acceder a valores de matriz y cadena usando llaves
					
				
				
					
						El acceso a valores de cadenas y matrices mediante la sintaxis de llaves está en desuso. Utilice $var[$idx] en lugar de $var{$idx}.
					
					
				
				
					
						
							
								En PHP 8.1, usar llaves{} para recuperar valores de la matriz provocará un error.
							
						
					
					
				
				
					
				
				
				
				
					Antes de PHP 8:
					$array = [1, 2];
echo $array[1]; // muestra 2
echo $array{1}; // también muestra 2
 
$string = "foo";
echo $string[0]; // muestra "f"
echo $string{0}; // también muestra "f"
					A partir de PHP 8:
					$array = [1, 2];
echo $array[1]; // muestra 2
echo $array{1}; // muestra el error: Deprecated: Array and string offset access syntax with curly braces is deprecated...
 
$string = "foo";
echo $string[0]; // muestra "f"
echo $string{0}; // muestra el error: Deprecated: Array and string offset access syntax with curly braces is deprecated...
				 
				
					3 - Parámetros obligatorios después de que se interrumpan los parámetros opcionales
					
				
				
					A partir de PHP 8, ya no se permite declarar una función o método agregando un parámetro obligatorio después de los parámetros opcionales. 
					Esto significa que la siguiente declaración de función dará como resultado una 
Aviso:
					
function foo($param_optional = null, $param_required) {
//           ^^ optional parameter , ^^ required parameter
}
				 
				
					Ejemplo de ‘Aviso’ generado por PHP:
					Deprecated: Required parameter $param_required follows optional parameter $param_optional in ... on line ...
				 
				
					4 - Operaciones aritméticas con cadenas no numéricas
					
				
				
					Hasta PHP 7 era posible realizar operaciones matemáticas con variables que contenían cadenas no numéricas, que en esta situación equivalía a cero.
					
				
				
					
						En PHP 8.1 este tipo de cálculo comenzaba a mostrar un error.
					
				
				
					
				
				
					
						
							Antes de PHP 8, el siguiente código no generaría un error:
							$b = "";
$a = $b + 2;
							Desde PHP 8 en adelante, es necesario probar si el valor de $b es una cadena numérica o un número, antes de realizar la operación:
							I.e 1:
							$a = is_numeric($b) ? $b + 2 : 2;
							I.e 2:
							if (!is_numeric($b)) {
	$b = 0;
}
$a = $b + 2;
						 
						
							
						
					 
					
						5 - Variables e índices inexistentes
						
					
					
						Hasta PHP 7 había cierta tolerancia respecto a las referencias a variables o índices indefinidos, generando únicamente un Aviso.
					
					
						
					
					
						En PHP 8, cualquier referencia a una variable inexistente o índice de matriz generará una Advertencia.
					
					
						
							Entonces, si su PHP está habilitado para mostrar Advertencias, encontrará errores para ese contexto.
						
					
					
						
						Para solucionarlo, es necesario probar si existe una variable o índice de matriz, antes de usarlo en alguna operación.
					
					
						
						I.e:
						$a = isset($b) ? $b + 2 : 2;
					 
					
						6 - Función ‘each()’
					
					
						Devuelve el par clave/valor actual de una matriz y avanza su cursor.
						
					
					
						
							Esta función se eliminó en PHP 8, 
						
						si la está utilizando en sus aplicaciones, debe cambiar el código antes de publicar en un entorno con PHP 8 o superior.
					
					
						
					
					
						
							Algunas opciones de sustitución:
						
					
					
					
						
						
						
						
							I.e:
							$result = "";
$tab = array(0=>array('tp'=>1,'vl'=>'aaa'),
	    1=>array('tp'=>2,'vl'=>'bbb'),
	    2=>array('tp'=>3,'vl'=>'ccc'));
							Antes de PHP 8:
							while (list ($key, $val) = each($tab)) {
	$result .= $tab[$key]["vl"];
}
							A partir de PHP 8, usando foreach():
							foreach ($tab as $key => $val) {
	$result .= $tab[$key]["vl"];
}
							
						 
					 
					
						7 - Función  array_key_exists() 
						
					
					
						Comprueba si existe una clave o un índice en una matriz.
					
					
					
						
						Antes de PHP 8:
						if (array_key_exists('index', $array1)) {
	// codigo
}
						A partir de PHP 8:
						if (isset($array1['index'])) {
	// codigo
}
					 
				 
				
				
					Proporcione el formato de número como una cadena de moneda.
				
				
					
						Esta función se eliminó de PHP 8 y en adelante, se puede reemplazar por la función intl
						
							
								NumberFormatter.
						
						
						
Antes de PHP 8:
						echo money_format("%.2n", 1234.56);
						A partir de PHP 8:
						$currencyObject = new NumberFormatter("pt-BR", NumberFormatter::CURRENCY);
echo $currencyObject->format(1234.56);
					 
					
						
					
					
						
							
								9 - Función mb_strrpos()
							
						
						
					
					
						
							
								Busca la posición de la última aparición de un valor en una cadena.
								
								Pasar la codificación como tercer parámetro a la función está en desuso..
							
						
					
					
					
						
							
								En su lugar, pase un desplazamiento 0 y la codificación como el cuarto parámetro:
							
						
						
					
				 
				
					
						
							
								Antes de PHP 8:
								$string = 'O rato roeu a roupa';
echo mb_strrpos($string, 'roeu', 'UTF-8');
								A partir de PHP 8:
								$string = 'O rato roeu a roupa';
echo mb_strrpos($string, 'roeu', 0, 'UTF-8');
								
									
								
							 
							
								
									
										
											Lista completa de cambios de PHP
										
									
									
								
								
									Para tener la lista completa de cambios en PHP siga los enlaces según la versión de PHP.