如何签入数组多维数组并在不存在时添加


How to check in array multidimentional array and add if not exists

>假设我有这样的数组,我从数据库中得到:

 (
    [0] => Array
        (
            [hour] => 03
            [percentage] => 20
        )
    [1] => Array
        (
            [hour] => 04
            [percentage] => 40
        )
    [2] => Array
        (
            [hour] => 05
            [percentage] => 10
        )
    [3] => Array
        (
            [hour] => 07
            [percentage] => 12
        )
    [4] => Array
        (
            [hour] => 10
            [percentage] => 15
        )
    )

但是我需要做的是,如果数组中不存在小时,即 1,2,6,8,9,11,12;我需要在数组中推送小时,我的百分比值为 0即

(
        [0] => Array
            (
                [hour] => 01
                [percentage] => 0
            )
        [1] => Array
            (
                [hour] => 02
                [percentage] => 0
        )
    [2] => Array
        (
            [hour] => 03
            [percentage] => 20
        )
........
    [12] => Array
        (
            [hour] => 12
            [percentage] => 0
       )

有些人可以给出如何使用这个的任何提示。我需要检查一天中的每一个小时。

必需:提供所有 12 小时的条目。

eval.in 的演示

法典:

$source = Array(
            array('hour' => 04, 'percentage' => 40),
            array('hour' => 05, 'percentage' => 10),
            array('hour' => 07, 'percentage' => 10),
            array('hour' => 10, 'percentage' => 15),
          );

$allHours = array(); // add all empty entries, in the correct order
                     // note: Index starts at one not zero! It is easier
for ($hour = 1; $hour <= 12; $hour++) { 
    $allHours[$hour] = array( 'hour' => $hour,  'percentage' => 0);
}
// replace existing ones
foreach($source as $entry) {
    $hour = $entry['hour'];
    $allHours[$hour] = $entry;
}
print_r($allHours);

让$hour和$percent是新值

If (!array_search($hour,         array_column($myarray, 'hour'))) {
  $myarray[] = array ('hour' => $hour, 'percentage' => $percent);
}

我发布我的答案可能对您有所帮助

for($i=1;$i<=12;$i++)
                {
                    if(!in_array( $i, array_column($data,'hour'))){
                       array_push($data,array('hour'=>$i,'percentage' =>     $percentage));
                    //$datas[] =array('hour'=>$hour,'percentage' =>         $percentage);
                    }
                }