0

我正在尝试计算每个盒子的体积,但我不断遇到错误,我不知道如何修复它。一切似乎都是正确的,我遵循了书中的例子。

这是它在这段代码中给我的错误:

“注意:未定义的偏移量:第 16 行 C:\wamp\www\BoxArray.php 中的 0”

<?php
$BoxMeasurements = array("sBox" => array("length" => 12, "width" => 10, "depth" => 2.5),
                         "mBox" => array("length" => 30, "width" => 20, "depth" => 4),
                         "lBox" => array("length" => 60, "width" => 40, "depth" => 11.5));

                        $BoxMeasurements = array_slice($BoxMeasurements, 0, 3);
                        echo "The box sizes are:";
                        for($i = 0; $i < count($BoxMeasurements); ++$i)
                        {
                            echo "$BoxMeasurements[$i]";
                        }
?>

当我尝试以另一种方式执行此操作时,出现此错误:

“解析错误:语法错误,意外 '=',在第 8 行的 C:\wamp\www\BoxArray.php 中期待 ')'”

<?php
$sBox = array("length" => 12, "width" => 10, "depth" = 2.5);
$mBox = array("length" => 30, "width" => 20, "depth" = 4);
$lBox = array("length" => 60, "width" => 40, "depth" => 11.5);
$dimension = array($sBox, $mBox, $lBox);

echo "$dimension[0][0]";
?>

有没有一种特殊的方法来调用变量/数组名称?

4

2 回答 2

2

$BoxMeasurements被声明为关联数组,这意味着您应该使用您在声明中定义的键访问它的值"sBox""mBox""lBox".

为了迭代这种数组,您可以使用以下foreach形式:

<?php
$BoxMeasurements = array("sBox" => array("length" => 12, "width" => 10, "depth" => 2.5),
                         "mBox" => array("length" => 30, "width" => 20, "depth" => 4),
                         "lBox" => array("length" => 60, "width" => 40, "depth" => 11.5));

echo "<pre>";
echo "The box sizes are:\n";
foreach($BoxMeasurements as $name => $size)
{
    $volume = $size['length'] * $size['width'] * $size['depth'];
    echo " - $name: $volume\n";
}
echo "</pre>";
?>

输出

The box sizes are:
 - sBox: 300
 - mBox: 2400
 - lBox: 27600
于 2012-10-26T17:44:54.450 回答
0

您似乎不了解变量名称变量内容之间的区别,如使用"周围名称所示。这是毫无意义。它应该是

echo $BoxMeasurements[$i];

分配数组时,正确的语法是:

key => value

而您的某些“行”仅分配了“键=值”,这会引发语法错误。

您还尝试通过数字索引访问数组,而您的数组不使用它们。使用 foreach 迭代数组:

foreach( $BoxMeasurements as $key=>$val ) {
  echo $val;
}

最后,您应该在循环中进行post increment ,而不是pre incrementfor

我强烈建议您花一些时间阅读一些教程,因为您犯了太多基本错误。

于 2012-10-26T17:41:39.760 回答