0

致命的なエラー:12行目のC:\ xampp \ htdocs \ include \ category\categories.phpで文字列オフセットを配列として使用できません

$categories[$parent][] = $row;

カテゴリ.php

    <?php

$sql = "SELECT catid, catname, parentid FROM categories";
$res = mysql_query($sql);
while ($row = mysql_fetch_assoc($res)) {
    $parent = intval($row['parentid']);
    if (!isset($categories[$parent])) {
        $categories[$parent] = array();
    }
    $categories[$parent][] = $row;
}
    ?>
    <table border="0" cellpadding="10" cellspacing="0">
    <tr>
        <td valign="top">
    <?php
    $category_string = "";
    function build_categories_options($parent, $categories, $level) {
        global $category_string;
        if (isset($categories[$parent]) && count($categories[$parent])) {
            $level .= " - ";
            foreach ($categories[$parent] as $category) {
                $opt_value = substr($level.$category['catname'],3);
                $category_string .= '<option value=""></option><option value="'.$category['catid'].'">'.$opt_value.'</option>';
                build_categories_options($category['catid'], $categories, $level);
            }
            $level = substr($level, -3);
        }
        return $category_string;
    }
    $category_options = build_categories_options(0, $categories, '');
    $category_options = '<select class="chosen" name="categories" id="categories">'.$category_options.'</select>';
    echo $category_options; 
    ?>
</td>

カテゴリ付きの投稿を挿入した後、このエラーが表示されますか?

4

1 に答える 1

3

がどこで初期化されているかわかりませんが、ループに$categories入ったときに配列ではないのではないかと思います。そのため、エラーが発生しています。ループwhileに対してこれを試してください:while

// initialize $categories to make sure it is an array
$categories = array();
while ($row = mysql_fetch_assoc($res)) {
    $parent = intval($row['parentid']);
    $categories[$parent][] = $row;
}

明示的に初期化する必要はありません$categories[$parent]...これは を呼び出すと自動的に行われます$categories[$parent][] = $row;。ループの前に空の配列で開始したため、空白で始まることがわかっています。

于 2012-09-27T19:24:19.417 に答える