php数组删除一些值并重新排序

时间:2016-10-05 03:29:26

标签: php mysql arrays multidimensional-array

(添加更多信息) 您好我在使用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

html result from above array

但我需要的是这样的:

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:如果我错过了一些数据,请告诉我。

3 个答案:

答案 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);