...

View Full Version : Multiplying in an associative multidimensional array



Ms Kay
05-17-2011, 06:28 PM
I have 3 categories: Small box, Medium box, and Large box. Each have the length, width and depth listed. I need to get the volume for each box size. I think I understand how to initialize an associative multidimensional array. I understand how to multiply. I don't understand how to multiply and make a statement for each box's volume. I think it has something to do with a foreach statement but I'm stuck. Please help!!

Fou-Lu
05-17-2011, 06:44 PM
Multiplying it can be done with an iteration. IMO, useless in PHP unless you need to recurse it.
PHP has a function for this called array_product. It works on a single level, but that's not really an issue either.



$aCalcs = array();
foreach ($yourArrayHere AS $key => $value)
{
$aCalcs[$key] = array_product($value);
}

Its not a recursive function, so you'll need to specify which level to work with. It shouldn't care if its associative or not, it will only focus on the (float)$values.

For a more advanced feature, you could use a class for this as well:


class Box
{
private $sBoxName;
private $x;
private $y;
private $z;
public function __construct($sBoxName, $x, $y, $z)
{
$this->sBoxName = $sBoxName;
$this->x = $x;
$this->y = $y;
$this->z = $z;
}
// You'd have getters/setters to access / mutate the data here, but I won't add those
public function getVolume()
{
return $this->x * $this->y * $this->z;
}
}

// Used
$aBoxes = array(
new Box('Small Box', 1, 1, 1),
new Box('Medium Box', 2, 2, 2),
new Box('Large Box', 3, 3, 3)
);

foreach ($aBoxes AS $box)
{
// getName would be one of the accessors which I skipped
print $box->getName() . ' has ' . $box->getVolume() . ' volume available';
}



EZ Archive Ads Plugin for vBulletin Copyright 2006 Computer Help Forum