数组问题

bea*_*ear 5 php mysql arrays

我遇到了以下代码的问题:

$ids = '"' . implode('", "', $crumbs) . '"';
$motd = array();
$dober = $db->query("SELECT id, name, msg, datetime FROM tbl_depts td INNER JOIN tbl_motd tm ON td.id = tm.deptid WHERE td.id IN (" . $ids . ")");

while ($row = $dober->fetch_array()) {
                $motd[] = $row;
      }
Run Code Online (Sandbox Code Playgroud)

print_r揭示了这一点:

Array
(
[0] => Array
    (
        [0] => 1
        [id] => 1
        [1] => Management
        [name] => Management
        [2] => New Management Rule!
        [msg] => New Management Rule!
        [3] => 
        [datetime] => 
    )

[1] => Array
    (
        [0] => 2
        [id] => 2
        [1] => Human Resources
        [name] => Human Resources
        [2] => DPS
        [msg] => DPS
        [3] => 
        [datetime] => 
    )
)
Run Code Online (Sandbox Code Playgroud)

因此,我无法使用此代码生成内容:

foreach ($motd[] as &$value) {

        if ($motd['msg'] != "") {
            if ($i == 0) {
                ?>


                <li><a href="#" title="content_<?php echo $value['id']; ?>"
                       class="tab active"><?php echo $value['name']; ?></a></li>
                <?
            } elseif ($i == $len - 1) {
                ?>
                <li><a href="#" title="content_<?php echo $value['id']; ?>"
                       class="tab"><?php echo $value['name']; ?></a></li>

                <?php } else { ?>
                <li><a href="#" title="content_<?php echo $value['id']; ?>"
                       class="tab"><?php echo $value['name']; ?></a></li>
                <?
            }
            $i++;
        }
    }
Run Code Online (Sandbox Code Playgroud)

关于我在这里做错了什么的想法?

编辑:如果您首先阅读此内容,您可能会发现更容易理解:优化此SQL查询

Ser*_*ter 3

首先 - 由于这两行,您的代码将无法工作:

foreach ($motd[] as &$value) {
    if ($motd['msg'] != "") {
Run Code Online (Sandbox Code Playgroud)

您应该在 foreach 中使用 $motd,而不是 $motd[] 并检查 $value['msg'],而不是 $motd['msg']

其次,尝试使用mysql_fetch_assoc代替mysql_fetch_array

第三 - $i 没有初始值。