PHP中在while循环中从MySQL结果中添加值到数组

4

对于初学者的问题表示抱歉。
我已经搜索了一个小时,只能找到有关在 while 循环中添加 1 个键 => 值的信息。 我旨在获得此结果。谢谢

$menu = array(  
    '1' => array('id' => 1, 'parentid' => 0, 'title' => 'Apple'),  
    '2' => array('id' => 2, 'parentid' => 0, 'title' => 'Banana'),  
    '3' => array('id' => 3, 'parentid' => 0, 'title' => 'Tangerine'),  
    '4' => array('id' => 4, 'parentid' => 3, 'title' => 'Pear')
);

我尝试了很多方法,但这似乎是最接近的。
$menu = array();
while($row = mysql_fetch_array($query)) {
    $menu[] = $row['id'] ;
    $menu[] = $row['parentid'] ;
    $menu[] = $row['title'];
}
2个回答

25

啊哈,看起来你想要像这样的东西

$menu = array();
while ($row = mysql_fetch_array($query)) {
    $menu[] = array(
        "id" => $row['id'], 
        "parentid" => $row['parentid'], 
        "title" => $row['title']
    );
}

关联数组的键是使用 "key" => "value" 创建的。


编辑

有点跑题了,但我强烈建议学习PDO来进行查询。它非常容易学习,并具有许多优点——安全性和灵活性是最重要的——可以将您的脚本提升到更高的水平。


谢谢您的快速回复。唯一的问题是这将数组放在另一个数组中。现在我有:Array([0] => Array([categoryid] => 160 [catparentid] => 93 [catname] => Cables)[1] => Array([categoryid] => 136 [catparentid] => 98 [catname] => Holders)[2] => Array(等等...)。我能否让它成为只有一个带有值的数组?谢谢! - jason3w
1
但是...那正是你说想要的。:) 无论如何,不能用一个数组引用所有值并使用关联键,因为每个新的键被处理时,值会被覆盖。也就是说,"id" => 56 将被 "id"=> 57 等等所替代,在最后你将得到一个包含最后一组值的三个关联键的数组。或者,如果将所有的值都倒入一个没有关联键的数组中,你将得到一大堆无组织的值 - 这也不好 :) - Ben
抱歉,我完全忽略了那个。你说得对,那就是我要的!抱歉啊。已经一个半月了,我还在整理基础知识。再次感谢! - jason3w
不用担心,祝你好运。还有看看PDO - 我提到它很容易了吗? :) - Ben
我已经快速浏览了一下。所以基本上它是使任何查询更加安全,对吧?我会进一步研究的。 - jason3w
1
是的,它增加了一层防止 SQL 注入攻击的安全性(这是一个大主题,不容易快速学习,但基本上是一种基本的黑客技术),并且在各个平台上标准化 SQL 语法,因此如果您从 MySQL 切换到 PGSQL,您不必调试语句(如果您不知道,某些 SQL 查询根据数据库而异)。还有更多好处,这些只是主要的两个。 - Ben

4
您只需将一个新的数组作为$menu数组的元素值添加即可。
$menu = array();
while($row = mysql_fetch_array($query)) {
    $menu[] = array(
        'id' => $row['id'],
        'parentid' => $row['parentid'],
        'title' => $row['title']
    );
}
var_dump($menu);

编辑:如何遍历数组(基本上这是PHP 101,建议查阅PHP数组

foreach($menu as $index => $record){
    echo "ID: {$record['id']} ParentID: {$record['parentid']} Title: {$record['title']}";
}

1
哈哈,只差两秒钟!如果这是一场枪战,我就死定了。 - Ben
谢谢您的快速回复。唯一的问题是这将数组放在另一个数组中。现在我有:Array([0] => Array([categoryid] => 160 [catparentid] => 93 [catname] => Cables)[1] => Array([categoryid] => 136 [catparentid] => 98 [catname] => Holders)[2] => Array(等等...)。我能否让它成为只有一个带有值的数组?谢谢! - jason3w
1
你如何在数组中存储多个记录和多个字段?当然,你必须使用多维数组。不知道如何使用多维数组是没有借口的,而且它其实很容易 - 看看我编辑过的帖子就知道了。 - user188654
抱歉,我大约1.5个月前开始学习PHP。基础还在努力掌握中。但是非常感谢你的帮助,真的很有价值!现在我可以回到我的任务上了 :) - jason3w

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接