PHP Bug when reusing variables by references

PHP Bug when reusing variables by references

I Just find a bug in PHP when you are reusing variables by references.

This is the example code:

$lines = array(
	'1' => array(
		'1A'
	),
	'2' => array(
		'2A',
		'2B',
		'2C'
	)
);

foreach($lines as &$items){
	foreach($items as $key => $value){
		if($value=='2B') unset($items[$key]);
	}
}

$items = array();
foreach($lines as $key => $items){
	print_r($items);
}

What this code should do, is to take the $lines array and delete the 2B value, but it doesn’t work like that, and is because it get crash when you use the $items variable in the second foreach and you already used it as a referece variable, even if you clean the $items variable with an empty array as you see in the code.

Just if you change the name or the $items variable in the second foreach it works fine.

https://bugs.php.net/bug.php?id=67608

Charlas sobre Aplicaciones Web con Cakephp

Charlas sobre Aplicaciones Web con Cakephp

Desde el próximo sabado 10 de mayo empezaré a dar unas charlas cuyo objetivo serán mostrar a los programadores e ingenieros de sistemas a desarrollar aplicaciones web en CakePHP.

Mi principal objetivo serán los principiantes, así que por esa razón la primera charla de este sabado desde las 9:30AM hasta la 1:00PM será HTML5 + CSS.

¿Quieres asistir? tengo 5 cupos disponibles, no tiene precio, es gratis.

Para esta primera charla tengo unos requisitos que debes cumplir:

  • Ser ingeniero de sistemas o programador.
  • No tener conocimientos de HTML ni CSS, o en su defecto que sea muy poco lo que sabes.
  • Tener ganas de venir y estar 3 1/2 horas hablando y practicando en el tema.
  • Traer tu propio computador

Todos los requisitos anteriores son obligatorios 🙂

Para el sábado siguiente haremos JavaScript + jQuery, así que espera mis indicaciones 🙂

Puedes contactarme por los comentarios de este artículo o por Twitter, Facebook o LinkedIn

Los pasabocas serán invitados por Salgarus 🙂

Esto será en la ciudad de Barranquilla, así que por favor abstenerse personas de otras partes del mundo.