簡體   English   中英

如何在 PHP 中轉換多維數組

[英]How to convert multidimensional array in PHP

我有多維數組,我想轉換該數組。

Array ( [Tickets Open] => Array ( 
   [01Oct-05Oct ] => 0 ) 
) 
Array ( [Tickets Open] => Array (
[06Oct- 12Oct ] => 0 ) 
) 
Array ( [Tickets Open] => Array ( 
 [13Oct-19Oct ] => 1 ) 
) 
Array ( [Tickets Open] => Array (
 [20Oct-26Oct ] => 18 ) 
) 
Array ( [Tickets Open] => Array (
[27Oct-31Oct ] => 9 ) 
)

我想以下面定義的這種形式轉換上面的數組。

Array ( [Tickets Open] => Array ( 
   [01Oct-05Oct] => 0 
   [06Oct-12Oct] => 5 
   [13Oct-19Oct] => 1 
   [20Oct-26Oct] => 18 
   [27Oct-31Oct] => 9 )
)

下面是我從中獲取數組的代碼,該數組顯示在最頂部

     $year='2019';
$month = intval($month);    
$month1 = date('M', mktime(0, 0, 0, $month, 10));           
$end = date('t',mktime(0,0,0,$month,1,$year));      //last date day of month: 28 - 31
$start = date('w',mktime(0,0,0,$month,1,$year)); 
$last = 7 - $start;                 
$noweeks = ceil((($end - ($last + 1))/7) + 1);
$output = "";
$output1 = "";                      
$monthlabel = str_pad($month, 2, '0', STR_PAD_LEFT);
$monthlabell = str_pad($month1, 2, '0', STR_PAD_LEFT);

for($x=1;$x<$noweeks+1;$x++){   
    if($x == 1){
        $startdate = "$year-$monthlabel-01";
        $startdate1 = "01$monthlabell";
         $day = $last - 6;
    }else{
        $day = $last + 1 + (($x-2)*7);
        $day = str_pad($day, 2, '0', STR_PAD_LEFT);
        $startdate = "$year-$monthlabel-$day";
        $startdate1 = "$day$monthlabell";
    }
    if($x == $noweeks){
        $enddate = "$year-$monthlabel-$end";
        $enddate1 = "$end$monthlabell";
    }else{
        $dayend = $day + 6;
        $dayend = str_pad($dayend, 2, '0', STR_PAD_LEFT);
        $enddate = "$year-$monthlabel-$dayend";
        $enddate1 = "$dayend$monthlabell";
    }
    $output .= "$startdate $enddate";
    // echo $output;
  $output1 = "$startdate1".'-'."$enddate1"."  ";
  $sql="SELECT COUNT(id) as id  FROM `glpi_tickets` WHERE CAST(date AS DATE) 
  BETWEEN '$startdate'  AND '$enddate' and status=6";

    $reusult = $GLOBALS['conn']->query($sql);
     $row = mysqli_fetch_assoc($reusult);


    $queryresult=mysqli_num_rows($reusult);

            $id=$row['id'];

            $data =array(array(
                'Tickets Open' => array(        
                    $output1=>$id
                )
            ));
}

我不想一遍又一遍地重復“開票”。 如果有任何解決方案,請指導我。 謝謝

試試這個:

$output = array();
foreach ($array1 as $key => $value){
    $output[] = (object)array_merge((array)$array2[$key], (array)$value);
}

這可能會有所幫助!

// Your input array
$array = array(
  array('Tickets Open' => array('01Oct-05Oct' => 0)),
  array('Tickets Open' => array('06Oct-12Oct' => 0)),
  array('Tickets Open' => array('13Oct-19Oct' => 1)),
  array('Tickets Open' => array('20Oct-26Oct' => 18)),
  array('Tickets Open' => array('27Oct-31Oct' => 9)),
);

$arrColums = array_column($array, 'Tickets Open');

$result = [];
foreach ($arrColums as $key => $value) {
    $result['Tickets Open'][key($value)] = $value[key($value)];
}

// result 
Array
(
    [Tickets Open] => Array
        (
            [01Oct-05Oct] => 0
            [06Oct-12Oct] => 0
            [13Oct-19Oct] => 1
            [20Oct-26Oct] => 18
            [27Oct-31Oct] => 9
        )

)

看看下面; 我在這里編輯了您的部分代碼。

$data = [];
for($x=1;$x<$noweeks+1;$x++) {
    // Your code here

    /* Instead of this
    $data =array(array(
        'Tickets Open' => array(        
            $output1=>$id
        )
    ));
    use below code
    */
    $data['Tickets Open'][$output1] = $id;
}
// $array = input array;
$final_array = array();
foreach ($array as $Tickets_Open) {
     foreach ($Tickets_Open as $key => $value) {
          $final_array['Tickets Open'][$key] = $value;
    }
}
print_r($final_array);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM