Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/250.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在PHP中转换多维数组_Php - Fatal编程技术网

如何在PHP中转换多维数组

如何在PHP中转换多维数组,php,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 ( [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
                )
            ));
}
$year='2019';
$month=intval($month);
$month1=日期('M',mktime(0,0,0,$month,10));
$end=日期('t',mktime(0,0,0,$month,1,$year))//月的最后日期:28-31
$start=日期('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_左);
对于($x=1;$xquery($sql);
$row=mysqli\u fetch\u assoc($reusult);
$queryresult=mysqli\u num\u行($reusult);
$id=$row['id'];
$data=数组(数组)(
“票证打开”=>数组(
$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;
}
$data=[];
对于($x=1;$x数组(
$output1=>$id
)
));
使用下面的代码
*/
$data['Tickets Open'][$output1]=$id;
}

这里的数组2是什么?要合并的其他数组。您可以指定多个阵列合并在一起。如下所示:数组合并(array1,array2,array3,…)是否按这种方式打印print\r($result);要获得我的输出?它向我显示这个数组()数组()数组()数组()数组([Tickets Open]=>Array([27Oct-31Oct]=>9)),我的输入数组和你的扫描有区别,你可以给你的数组输入数组([Tickets Open]=>Array([01Oct-05Oct]=>0))数组([Tickets Open]=>Array([06Oct-12Oct]=>0))数组([Tickets Open]=>Array([13Oct-19Oct]=>1)数组([Tickets Open]=>Array([20Oct-26Oct]=>18))数组([Tickets Open]=>Array([27Oct-31Oct]=>9))请在代码中添加一些解释,以便其他人可以从中学习
// $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);