2013-01-12 109 views
1

我的代碼有什麼問題?添加變量的PHP數組

Warning: Invalid argument supplied for foreach() on line 12)

<?php 

$id = array("price" => "10"); 

$id['price'][1] = $id['price']; 
$id['price'][3] = ($id['price'] * 3 * 0.97); 
$id['price'][6] = ($id['price'] * 6 * 0.95); 

$id['price'][3] = round($id['price'][3],2); 
$id['price'][6] = round($id['price'][6],2); 

foreach($id['price'] as $money) { 
    echo '<option value="'.$money.'">.'.$money.'$</option>'."\n"; 
} 

?> 

回答

4

你得到這個錯誤,因爲$id['price']是一個字符串(如你定義它),而不是一個數組。

在PHP中,您可以訪問與數組索引相同的字符串索引,因此您要使用$id['price'][x]賦值設置字符串的單個字符,然後嘗試遍歷foreach中的字符串。

如果您在循環之前做了var_dump($id['price']);,你會看到:

string(7) "11 3 6" 

如果你想要一個陣列,並且讓每個分配陣列中創建不同的元素,初始化$id['price']到一個數組,並添加相應的元素:

$id = array("price" => array("10")); 

$id['price'][1] = $id['price'][0]; 
$id['price'][3] = ($id['price'][0] * 3 * 0.97); 
$id['price'][6] = ($id['price'][0] * 6 * 0.95); 

$id['price'][3] = round($id['price'][3],2); 
$id['price'][6] = round($id['price'][6],2); 
+0

感謝您的幫助。 –

+0

避免弱類型:'price => array(「10」)'→'price => array(10)'。 –