Ver Mensaje Individual
  #5 (permalink)  
Antiguo 04/03/2016, 20:36
matake
 
Fecha de Ingreso: mayo-2013
Mensajes: 191
Antigüedad: 11 años, 6 meses
Puntos: 10
Respuesta: dudas ambito variables en funciones anonimas php

No no,
El codigo lo he probado tal cual lo puse al principio
pero no quise ponerlo otra vez por que soalmente ha cambiado el signo &


O sea asi sigue igual .. no se guarda el cambio de la variable de fuera:
Código PHP:
Ver original
  1. function mi_funcion(){
  2.    
  3.     $variable = "valor1 valor2 valor3";
  4.    
  5.     $variable = preg_replace_callback('/valor2/',function($coincidencias)use(&$variable){
  6.        
  7.         //necesito cambiar aqui por otros criterios la palabra valor3 de la variable
  8.         $variable = str_replace("valor3","valor3_cambiado",$variable);
  9.    
  10.         //esto hace lo correcto cambia el valor2
  11.         return "valor2_cambiado";
  12.    
  13.     },$variable);
  14.    
  15.    
  16.     echo $variable;     //devuelve "valor1 valor2_cambiado valor3"  
  17.                             //deseado era "valor1 valor2_cambiado valor3_cambiado"
  18. };
  19.  
  20. mi_funcion();


Y el error salta si hago esto:
Código PHP:
Ver original
  1. function mi_funcion(){
  2.    
  3.     $variable = "valor1 valor2 valor3";
  4.    
  5.     $variable = preg_replace_callback('/valor2/',function($coincidencias)use(&$variable){
  6.        
  7.         //necesito cambiar aqui por otros criterios la palabra valor3 de la variable
  8.         $variable = str_replace("valor3","valor3_cambiado",$variable);
  9.    
  10.         //esto hace lo correcto cambia el valor2
  11.         return "valor2_cambiado";
  12.    
  13.     },&$variable); // !!!!!!!!!!!! aqui es la linea donde salta el error !!!!!!!!!!!!!!!!!!!
  14.  
  15.  
  16.    
  17.    
  18.     echo $variable;     //devuelve "valor1 valor2_cambiado valor3"  
  19.                             //deseado era "valor1 valor2_cambiado valor3_cambiado"
  20. };
  21.  
  22. mi_funcion();

El ejemplo lo tengo aislado o sea no hay ningun otra cosa que interfiere. solamente ejecuto esto. Ningun otra cosa PHP

Última edición por matake; 04/03/2016 a las 20:42