在for循环中为数组赋值

时间:2013-04-07 03:21:55

标签: php

我知道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
}

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

感谢各个团体,解决方法正在评论中。

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分: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具有正确的数据结构,但是根据您的问题描述,那里应该没有问题。

答案 2 :(得分:0)

如果在遍历/循环之后只遇到包含“最后”数据位的数组的问题,你应该假设你在某处做了覆盖错误。

查看你的循环,分配在第二个循环中,带有...

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

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

由于我不确切地知道你想要在最终数组中寻找什么,我只能对解决方案给出一个假设。这可能就像......

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

这将基本上使$ary_menu[$loop_i]成为它自己的数组,在每次循环迭代中追加新值。这将解决覆盖问题。但同样,我不确定这是不是你想做的事。