加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 用零填充数组

发布时间:2020-12-13 13:04:28 所属栏目:PHP教程 来源:网络整理
导读:我正在运行一个 mysql查询,结果数组是这样的,每个月都在变化: Array( [0] = Array ( [day] = 2 [count] = 10 )[1] = Array ( [day] = 4 [count] = 39 )[2] = Array ( [day] = 5 [count] = 51 ) ) 我想添加几天,所以我得到31天,添加的将填充0,像这样: Array
我正在运行一个 mysql查询,结果数组是这样的,每个月都在变化:
Array(    
[0] => Array
    (
        [day] => 2
        [count] => 10
    )

[1] => Array
    (
        [day] => 4
        [count] => 39
    )

[2] => Array
    (
        [day] => 5
        [count] => 51
    )
    )

我想添加几天,所以我得到31天,添加的将填充0,像这样:

Array(    
[0] => Array
    (
        [day] => 1
        [count] => 0
    )

[1] => Array
    (
        [day] => 2
        [count] => 10
    )

[2] => Array
    (
        [day] => 3
        [count] => 0
    )

[3] => Array
    (
        [day] => 4
        [count] => 39
    )
    )

我想用31天填充阵列,使用已经存在的日期和计数数据……就像在第二个例子中那样……第1天和第3天就在那里…所以我添加了它们的数量值0 …按顺序… 1~31天

查询非常简单:

SELECT day(`dates`) day,count(`dates`) count FROM `calls` where month(dates) = 7

所以每个月有不同数量的“天”,有几个月没有电话.

也可以尝试这个,根据您的要求修改范围(1,10)
[akshay@localhost tmp]$cat test.php 
<?php

$array=array( 
              array("day"=>2,"count"=>10),array("day"=>4,"count"=>39),array("day"=>5,"count"=>51)
            );


function modify_array($array,$range)
{
    $tmp = array();
    array_map(function($_) use (&$tmp){ $tmp[$_] = array("day"=>$_,"count"=>0); },$range);
    $output = array_combine( array_column($array,"day"),$array ) + $tmp;
    ksort($output);
    return array_values($output);
}

// Output - modify range(1,10) as per your wish
print_r( modify_array($array,range(1,10)) );

?>

产量

[akshay@localhost tmp]$php test.php 
Array
(
    [0] => Array
        (
            [day] => 1
            [count] => 0
        )

    [1] => Array
        (
            [day] => 2
            [count] => 10
        )

    [2] => Array
        (
            [day] => 3
            [count] => 0
        )

    [3] => Array
        (
            [day] => 4
            [count] => 39
        )

    [4] => Array
        (
            [day] => 5
            [count] => 51
        )

    [5] => Array
        (
            [day] => 6
            [count] => 0
        )

    [6] => Array
        (
            [day] => 7
            [count] => 0
        )

    [7] => Array
        (
            [day] => 8
            [count] => 0
        )

    [8] => Array
        (
            [day] => 9
            [count] => 0
        )

    [9] => Array
        (
            [day] => 10
            [count] => 0
        )

)

– 编辑评论 –

对于没有array_column的旧版PHP

function modify_array($array,$range)
{
    $tmp = array(); 
    array_map(function($_) use (&$tmp){ $tmp[$_] = array("day"=>$_,$range);
    $output = array_combine( array_map(function($e){return $e["day"];},$array),$array ) + $tmp;
    ksort($output);
    return array_values($output);
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读