PHP多维数组帮助


PHP Multi Dimensional Array Help

我正在从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";
}

你的引号在数组中是向后的

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]

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

假设查询实际执行,问题在于如何将数组值初始化为数组键。在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的东西的隐患。

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

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

"$row['key']"周围加引号是不必要的,也是多余的。

PHP数组文档