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

bpsygsoo  于 2021-06-24  发布在  Mysql
关注(0)|答案(3)|浏览(365)

(添加更多信息)您好,我在用php填充数组时遇到了一些问题,我进行了一个mysql查询以获取两个日期之间的数据,结果如下:

"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结果
如果只有一列(或两列)有值,则另一列的值应为“-”

0-> 1:data10  2:data20     3:data30
1-> 1:-11     2:data21     3:-31
2-> 1:data12  2:-22        3:data32

有没有办法从数组中删除或添加“-”,并对其他值和键重新排序?谢谢!警察:如果我遗漏了一些数据,请告诉我。

dgsult0t

dgsult0t1#

在从数组中删除一些索引之后,您希望以相同的索引格式获取数组,或者说reindex try with

array_values($array);

此数组函数用于重新排列数组索引。享受stackoverflow。

vshtjzan

vshtjzan2#

首先按以下代码删除数组值:

unset($array[$index]);

然后像这样重新订购:

array_values($array);
62o28rlo

62o28rlo3#

我为你的问题写了以下代码。您希望结果的内部数组有3个键,这就是为什么我编写了“if($s\u key>=3)”,您可以根据需要更新它。现在你不想要“-”,所以我写了“如果($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);

相关问题