Entradas en "estructuras de control"
Para cada uno de mis descuidos…
Un problema rápido en PHP, un lenguaje que todo el mundo dice conocer… y del que en realidad muy pocos tienen algo de idea:
<?php
class Fruit
{
function __construct($name)
{
$this->name=$name;
$this->stock['current']=array('value' => 3);
$this->stock['cache']=array('value' => 3);
}
function setStock($new_stock)
{
foreach($this->stock as $key => $current_stock)
{
$current_stock['value']=$new_stock;
}
}
}
$fruits=array(
"apple" => new Fruit("Apple"),
"peach" => new Fruit("Peach")
);
//Run!
foreach($fruits as $fruit)
{
$fruit->setStock(8);
echo $fruit->name." = ".$fruit->stock['current']['value']."\n";
}
foreach($fruits as $fruit)
{
$fruit->stock['current']['value']=8;
$fruit->stock['cache']['value']=8;
echo $fruit->name." = ".$fruit->stock['current']['value']."\n";
}
Este código saca por pantalla:
Apple = 3
Peach = 3
Apple = 8
Peach = 8
¿Por qué en el primer foreach no funciona el setStock a 8? ¿Por qué en el segundo sí? Dad una explicación y proponed alguna solución para arreglarlo. El premio para el primero que acierte es, como de costumbre, es una botella de kilkenny 😉

