[英]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.