HTML選択ボックスにツリーを作成するコードがあります。配列を埋めて、次のように選択ボックスにツリーを生成しました。
$vertices = array(
    array(
        'id' => 5,
        'name' => 'Child3',
        'parent' => 2,
    ),
    array(
        'id' => 3,
        'name' => 'Child1',
        'parent' => 1,
    ),
    array(
        'id' => 4,
        'name' => 'Child2',
        'parent' => 1,
    ),
    array(
        'id' => 1,
        'name' => 'Cat1',
        'parent' => null,
    ),
    array(
        'id' => 2,
        'name' => 'Cat2',
        'parent' => null,
    ),
);
/**
 * Generate tree
 */
$subtrees = $trees = array();
foreach ($vertices as $vertex) {
    $v = array(
        'id' => $vertex['id'],
        'name' => $vertex['name'],
        'children' => array(),
    );
    if (isset($subtrees[$vertex['id']])) {
        $v['children'] = $subtrees[$vertex['id']];
    }
    if ($vertex['parent'] === null) {
        $trees[] = $v;
    }
    else if (!isset($subtrees[$vertex['parent']])) {
        $subtrees[$vertex['parent']] = array($v);
    }
    else {
        $subtrees[$vertex['parent']][] = $v;
    }
}
unset($subtrees);
/**
 * Generate HTML
 */
function getSubtreeOptions(array $subtreeRoot, $level = 0)
{
    $html = sprintf('%s<option value="%d">%s%s</option>' . PHP_EOL,
        str_repeat("\t", $level + 1),
        $subtreeRoot['id'],
        $level > 0 ? str_repeat(' ', $level) . '--' : null,
        $subtreeRoot['name']);
    foreach ($subtreeRoot['children'] as $child) {
        $html .= getSubtreeOptions($child, $level + 1);
    }
    return $html;
}
echo '<select name="stuff">' . PHP_EOL;
foreach ($trees as $root) {
    echo getSubtreeOptions($root);
}
echo '</select>';
正常に動作しますが、mysqlクエリで配列を埋めたい場合、selectboxに何も表示されません
これは、配列を埋めるための私のdbコードです:
$res = mysql_query('SELECT id, name, parent FROM groups ORDER BY parent DESC, id') or trigger_error('Query failed: ' . mysql_error(), E_USER_ERROR);
$vertices = array();
while ($vertex = mysql_fetch_assoc($res)) {
    $vertices[] = $vertex;
}
問題はどこだ?
配列を印刷すると、出力は次のようになります。
Array
(
    [0] => Array
        (
            [id] => 4
            [name] => test
            [parent] => 3
        )
    [1] => Array
        (
            [id] => 2
            [name] => test
            [parent] => 1
        )
    [2] => Array
        (
            [id] => 3
            [name] => test
            [parent] => 1
        )
    [3] => Array
        (
            [id] => 1
            [name] => test
            [parent] => 0
        )
    [4] => Array
        (
            [id] => 5
            [name] => test
            [parent] => 0
        )
)