PHP多维数组帮助

时间:2011-07-28 01:25:42

标签: php mysql arrays multidimensional-array

我正在从MySQL数据库填充一个数组,问题是我在下拉框中得到9个空白字段,我正在尝试填充它。我做错了什么?

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

3 个答案:

答案 0 :(得分: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]

但这不是一个好习惯,因为如果通过一个名为index的define()有一个常量,那么你的所有语句都将使用你的常量定义而不是你想要的字符串。

答案 1 :(得分: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的内容。

答案 2 :(得分:0)

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

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

"$row['key']"周围放置引号是不必要且多余的。

The PHP array documentation