0

我知道init php数组方法是

$a=array("星期日","星期一","星期二","星期三","星期四","星期五","星期六");

但我必须在两个暗淡的数组中分配,这样的数据是

 [0]=> array(6) { ["id"]=> string(1) "2" ["menu_name"]=> string(12) "小吃菜單" ["button_pic_save_path"]=> string(40) "/images/left_button/menu/normal_menu.gif" ["cover_button_pic_save_path"]=> string(46) "/images/left_button/menu/normal_menu_cover.gif" ["order_number"]=> string(1) "0" ["modify_time"]=> string(19) "2013-04-07 09:37:43" } } 
 [1]=> array(6) { ["id"]=> string(1) "3" ["menu_name"]=> string(12) "小吃菜單" ["button_pic_save_path"]=> string(40) "/images/left_button/menu/normal_menu.gif" ["cover_button_pic_save_path"]=> string(46) "/images/left_button/menu/normal_menu_cover.gif" ["order_number"]=> string(1) "0" ["modify_time"]=> string(19) "2013-04-07 09:37:43" } } 

现在我的实现代码如下..

$query_menu_data = select_sql(QUERY_MENU_SQL_STR);

if(count($query_menu_data) >= 1)
{
    $ary_menu[count($query_menu_data)];

    for($loop_i = 0; $loop_i < count($query_menu_data); $loop_i++)
    {
        for($loop_j = 0; $loop_j < count($ARY_MENU_FIELD); $loop_j++)
        {
            // hash key
            /*
            $ary_menu[$loop_i] = array( 
                $ARY_MENU_FIELD[$loop_j] =>  $query_menu_data[$loop_i][$loop_j]
            );
            */
            $ary_menu[$loop_i] = array( 
                $ARY_MENU_FIELD[$loop_j] =>  $query_menu_data[$loop_i][$loop_j]
            );
        }   // end loop j
    } // end loop i
}

数组的结果总是保存最后的数据,我有什么方法可以解决它。

感谢大家,解决方法在评论中。

4

3 回答 3

0

看起来您的内部循环 ( loop_j) 可能永远不会执行,因为您在第一次执行它之前没有定义 $ARY_MENU_FIELD (并且它是在该循环中创建/修改的)。您是否还有其他代码未显示?

于 2013-04-07T03:29:52.063 回答
0

您需要初始化菜单项。之后,您需要填写此菜单的每个菜单字段。

代码:

for($loop_i = 0; $loop_i < count($query_menu_data); $loop_i++)
{
    $ary_menu[$loop_i] = array();
    for($loop_j = 0; $loop_j < count($ARY_MENU_FIELD); $loop_j++)
    {
        // hash key
        /*
        $ary_menu[$loop_i] = array( 
            $ARY_MENU_FIELD[$loop_j] =>  $query_menu_data[$loop_i][$loop_j]
        );
        */
        $ary_menu[$loop_i][$ARY_MENU_FIELD[$loop_j]] = $query_menu_data[$loop_i][$loop_j];
    }   // end loop j
} // end loop i

我无法验证是否$query_menu_data具有正确的数据结构,但从您的问题描述来看,那里应该没有问题。

于 2013-04-07T03:36:39.307 回答
0

当您在遍历/循环后遇到仅包含“最后”位数据的数组问题时,您应该假设您在某处发生了覆盖错误。

查看您的循环,分配来自第二个循环,其中...

$ary_menu[$loop_i] = array(...

上面的=等号应该是您正在寻找的线索。每次内部for 循环运行时,您都会一遍又一遍地分配$loop_i数组中的索引。这是重新分配发生的地方。$ary_menu$loop_j

由于我不确切知道您要在最终数组中寻找什么,因此我只能对解决方案进行假设。这可能正在做类似的事情......

$ary_menu[$loop_i][] = array(....)

这实际上是创建$ary_menu[$loop_i]一个自己的数组,在每次循环迭代中附加新值。这将解决覆盖问题。但同样,我不确定这是否是你想要做的。

于 2013-04-07T03:37:40.213 回答