我知道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
}
数组的结果总是保存最后的数据,我可以用什么方法解决它。
感谢各个团体,解决方法正在评论中。
答案 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]
成为它自己的数组,在每次循环迭代中追加新值。这将解决覆盖问题。但同样,我不确定这是不是你想做的事。