2011-07-28 64 views
0

我正从MySQL数据库填充数组,问题是我在我的下拉框中获得9个空白字段,我试图用它填充它。我做错了什么?PHP多维数组帮助

PHP代码:

while($row = mysql_fetch_assoc($results)) 
{ 
    $options[] = array(
         Name => $row['Name'], 
         Value => $row['Value'], 
         ID => $row['CID'] 
        ); 
} 

下拉框:

for ($i = 0; $i < 9; $i++) 
{ 
    print '<option id="'.$options[$i]["ID"].'" value="'.$options[$i]["Value"].'">' 
      .$options[$i]["Name"]. 
      '</option>'."\n"; 
} 
+0

请'print_r($ options);'在* while循环后显示输出*。 –

回答

2

你的报价是向后阵列中

while($row = mysql_fetch_assoc($results)) 
{ 
    $options[] = array("Name" => $row['Name'], "Value" => $row['Value'], "ID" => $row['CID']); 
} 

此外,在双引号中使用关联数组需要你这样做:

echo "I want to print out this: {$arr['index']}"; 

如果你不这样做,它(应该)导致一个分析错误。

您可能注意到,这也适用

echo $arr[index] 

但是,这不是很好的做法,因为如果有一个不断通过定义()命名的指数,所有的报表将使用您的常量的定义,而不是你想要的字符串。

0

您必须引用数组键Name, Value, ID

$options[] = array('Name' => "$row['Name']", 'Value' => "$row['Value']", 'ID' => "$row['CID']"); 

配售"$row['key']"各地报价是不必要的,多余的。

The PHP array documentation

2

假设您的查询实际执行,问题是你如何初始化您的数组值的数组键。在PHP中,关联数组的键必须是字符串,PHP中的字符串用单引号或双引号引起来。

$foo = array(Name => 'value'); // incorrect, Name isn't a string 
$foo = array('Name' => 'value'); // correct 

访问关联数组也需要使用字符串键:

$foo[Name] // incorrect, Name isn't a string 
$foo['Name'] // correct 

当使用双引号的字符串内阵列,以获得他们的价值,你应该围绕阵列,括号:

"$foo['Name']" // can cause problems 
"{$foo['Name']}" // good practice 

请注意,您可以使用常规变量的大括号技术:

$bar = "Hello"; 
$foo['Name'] = "World"; 
echo "{$bar} {$foo['Name']}"; // prints Hello World! 

如果你想要做的是保存所有的行,你可以存储整个$row阵列:

$options[] = $row; 

,而不是每个单独的值复制从阵列到阵列。这更简洁,更具可读性,更不容易出错,并且如果$row的内容改变,则将推广。当然,如果$row的内容发生变化,则存在需要更改依赖于$options的事物的缺陷。