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;
}

最後に、プリ インクリメントではなく、ループ内でポスト インクリメントを行う必要があります。for

基本的なエラーが多すぎるため、時間をかけていくつかのチュートリアルを実行することを強くお勧めします.

于 2012-10-26T17:41:39.760 に答える