(添加更多信息) 您好我在使用php填充数组时遇到了一些问题,我创建了一个mysql查询来获取2个日期之间的数据,这些是结果:
"SELECT hours FROM dates WHERE id='2' AND (day BETWEEN 'TODAY' AND 'TODAY +2 DAYS') ORDER BY day ASC, hours ASC" [Seudo code]
0-> 1:data10 2:- 3:-
1-> 1:data11 2:- 3:-
2-> 1:data12 2:- 3:-
3-> 1:- 2:data23 3:-
4-> 1:- 2:data24 3:-
5-> 1:- 2:data25 3:-
6-> 1:- 2:- 3:data36
7-> 1:- 2:- 3:data37
8-> 1:- 2:- 3:data38
但我需要的是这样的:
0-> 1:data10 2:data23 3:data36
1-> 1:data11 2:data24 3:data37
2-> 1:data12 2:data25 3:data38
html result with reorder array
并且如果只有一个(或2个)列/ s具有值,则其他/ s值/ s应为" - "
0-> 1:data10 2:data20 3:data30
1-> 1:-11 2:data21 3:-31
2-> 1:data12 2:-22 3:data32
有没有办法删除或添加" - "从数组中重新排序其他值和键? 谢谢! PD:如果我错过了一些数据,请告诉我。
答案 0 :(得分:0)
从数组中删除一些索引后,您希望以相同的索引格式获取数组,或者说使用
重新编译 array_values($array);
此数组函数重新排列数组索引。享受Stackoverflow。
答案 1 :(得分:0)
我为您编写了以下代码问题。你希望结果的内部数组有3个键,这就是我写“if($ s_key> = 3)”的原因,你可以根据需要更新它。目前你不想' - '这就是为什么我写“if($ val!=' - ')”你可以根据需要添加更多条件。
感谢。
快乐编码
//sample data
$data = array (array('111','-','222'),array('3333','-','444'),array('-','-','444'),array('4545','77','444'),array('-','454','444'),array('-','98','444'));
$formatted_data = array();
$f_key = $s_key = 0;
foreach($data as $arr_key => $arr) {
foreach($arr as $key => $val){
if($val != '-'){
$formatted_data[$f_key][$s_key] = $val;
$s_key++;
if($s_key >= 3){
$s_key = 0;
$f_key++;
}
}
}
}
echo '<pre>';
print_r($formatted_data);
答案 2 :(得分:0)
首先通过以下代码删除数组值:
unset($array[$index]);
然后重新订购:
array_values($array);