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 😉

kilkenny-02-300x251

Leer más