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



(添加更多信息)你好,我有一些麻烦填充数组与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结果从上面的数组

但我需要的是这样的东西:

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

并且如果只有一个(或两个)列/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:如果我遗漏了什么数据,请告诉我。

从数组中删除一些索引后如果你想获得相同索引格式的数组或者使用reindex try with

 array_values($array); 

这个数组函数重新排列数组索引。享受Stackoverflow。

首先按此代码删除数组值:

 unset($array[$index]);

然后重新排序:

array_values($array); 

我为你的问题写了以下代码。你想结果的内部数组有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);

相关内容

  • 没有找到相关文章

最新更新