2012-10-26 18 views
0

我正在嘗試計算每個框的體積,但是我一直遇到錯誤,我不知道如何解決它。一切似乎都是正確的,我遵循了本書的例子。BoxArray中的未定義偏移

這是它給了我在這個代碼中的錯誤:

「通知:未定義抵消:0在C:\ WAMP \ WWW \ BoxArray.php第16行」

<?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]"; 
         } 
?> 

當我試圖做它的其他方式,我得到這個錯誤:

「解析錯誤:語法錯誤,意想不到的 '=',希望在C ')':\ WAMP \ WWW \ BoxArray.php第8行」

<?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]"; 
?> 

有沒有特別的方法來調用變量/數組名稱?

+0

那麼第二個錯誤是由於您使用'= '而不是'=>' – sachleen

+0

我檢查了這本書,它給了我的教科書中的例子就是這樣並且有效。 – ai5uzu

回答

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 
+0

我沒有考慮使用foreach語句。謝謝。 – ai5uzu

0

你似乎不明白之間變量名變量的內容差異,通過使用"各地所示。沒有用。它應該是

echo $BoxMeasurements[$i]; 

雖然分配您的陣列,正確的語法是:

key => value 

而你的一些「行」的分配只是「鍵=值」,這將引發語法錯誤。

此外,您嘗試通過數字索引訪問數組,而您的數組不使用它們。使用foreach來排列:

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

最後,你應該做後增量for循環,不預增量

我強烈建議花費一些時間,並通過一些教程,因爲你犯了太多的基本錯誤。

+0

您必須將所有echo語句放在雙引號內。我從來沒有遇到過問題,並且之前完成過。 – ai5uzu

+0

垃圾。你必須引用**字符串**。引用變量名稱在技術上並不正確。這沒有意義。 –

+0

post/pre在for循環中遞增計數器在執行中沒有區別。 – sachleen