我有一个字符串如下
Mon[3,9] Tue[3,9] Wed[5,9] Thu[5,11] Fri[5,11] Sat[5,11] Sun[4,10]
我想将此字符串分解为多维数组,并将像Mon,Tue,Wed这样的日期存储为键,将方括号内的值存储为以下每一天的值,并以较小的数组访问每一天
Array
(
[Mon] => [3,9]
[Tue] => [3,9]
[Wed] => [5,9]
[Thu] => [5,11]
[Fri] => [5,11]
[Sat] => [5,11]
[Sun] => [4,10]
)
使用下面的代码,我能够实现它,但是将诸如[3,9] or [5,11]
字符串之类的值
$atd = $utd = "";
$dod = "20-12-2020";
$daysArray = "Mon[3,9] Tue[3,9] Wed[5,9] Thu[5,11] Fri[5,11] Sat[5,11] Sun[4,10]";
$days = array('Mon','Tue','Wed','Thu','Fri','Sat','Sun');
preg_match_all("/\[[^\]]*\]/", $daysArray, $matches);
$dayNum = $matches[0];
$daysArray = array_combine($days , $dayNum);
print_r($daysArray);
$valArray = array();
foreach($daysArray as $day=>$val){
if($day == "Mon" || $day == "Tue"){
$atd = date("d-m-Y", strtotime("+".$val[0]." days", $dod));
$utd = date("d-m-Y", strtotime("+".$val[1]." days", $dod));
}else if($day == "Sun"){
$atd = date("d-m-Y", strtotime("+".$val[0]." days", $dod));
$utd = date("d-m-Y", strtotime("+".$val[1]." days", $dod));
}else if($day == "Wed"){
$atd = date("d-m-Y", strtotime("+".$val[0]." days", $dod));
$utd = date("d-m-Y", strtotime("+".$val[1]." days", $dod));
}else{
$atd = date("d-m-Y", strtotime("+".$val[0]." 5 days", $dod));
$utd = date("d-m-Y", strtotime("+".$val[1]." days", $dod));
}
}
}
当我打印$valArray
它是一个像下面这样的数组,这是非常糟糕的。
array(
[0]=>[
[1]=>4
[2]=>,
[3]=>1
[4]=>0
[5]=>]
);
请帮忙
我认为这是您想要的结果。
$str = 'Mon[3,9] Tue[3,9] Wed[5,9] Thu[5,11] Fri[5,11] Sat[5,11] Sun[4,10]';
$result = [];
$bits = explode(' ', $str); // explode on space between day names
foreach ( $bits as $bit) {
$b = explode('[', $bit); // $bit = Mon[3,9]
$b[1] = rtrim($b[1], ']'); // $b0 = Mon, B1 = 3,9] so trim off the last ]
$result[$b[0]] = explode(',', $b[1]); // explode on , to get inner array
}
print_r($result);
结果
Array
(
[Mon] => Array
(
[0] => 3
[1] => 9
)
[Tue] => Array
(
[0] => 3
[1] => 9
)
[Wed] => Array
(
[0] => 5
[1] => 9
)
[Thu] => Array
(
[0] => 5
[1] => 11
)
[Fri] => Array
(
[0] => 5
[1] => 11
)
[Sat] => Array
(
[0] => 5
[1] => 11
)
[Sun] => Array
(
[0] => 4
[1] => 10
)
)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句