我正在创建新数组,然后将这些数组添加到“父母”中。阵列。每个新阵列代表星期日到星期六的一天。每一天都是一个数组本身,我试图保留当天的名称作为关键。这是我目前得到的输出(从Chrome复制):
array(3) {
["active"]=>
string(0) ""
["start"]=>
int(1440219600)
["end"]=>
int(1440221400)
}
array(8) {
["Sunday"]=>
array(3) {
["active"]=>
string(2) "no"
["start"]=>
int(1440219600)
["end"]=>
int(1440221400)
}
["Monday"]=>
array(3) {
["active"]=>
string(2) "no"
["start"]=>
int(1440219600)
["end"]=>
int(1440221400)
}
["Tuesday"]=>
array(3) {
["active"]=>
string(2) "no"
["start"]=>
int(1440219600)
["end"]=>
int(1440221400)
}
["Wednesday"]=>
array(3) {
["active"]=>
string(3) "yes"
["start"]=>
int(1440219600)
["end"]=>
int(1440221400)
}
["Thursday"]=>
array(3) {
["active"]=>
string(2) "no"
["start"]=>
int(1440219600)
["end"]=>
int(1440221400)
}
["Friday"]=>
array(3) {
["active"]=>
string(2) "no"
["start"]=>
int(1440219600)
["end"]=>
int(1440221400)
}
["Saturday"]=>
array(3) {
["active"]=>
string(2) "no"
["start"]=>
int(1440219600)
["end"]=>
int(1440221400)
}
["exceptional_days"]=>
array(3) {
["active"]=>
string(0) ""
["start"]=>
int(1440219600)
["end"]=>
int(1440221400)
}
}
如您所见,Sunday不是第一个数组的关键,而是第二个数组的关键。特殊的日子'应该是空的。
这是我的代码:
$newWorkerSchedule = array();
$keys = array_keys($workerSchedule);
for($i = 0; $i < count($workerSchedule); $i++) {
if (is_array($workerSchedule[$keys[$i]])) {
$oldStart = $workerSchedule[$keys[$i]]['start'];
$oldEnd = $workerSchedule[$keys[$i]]['end'];
if($oldEnd == '00:00') {
$oldEnd = '23:59';
}
$oldStart = strtotime($oldStart);
$oldEnd = strtotime($oldEnd);
$newStart = strtotime('+' . $timeZoneDiffHours . ' hours', $oldStart);
$newEnd = strtotime('+' . $timeZoneDiffHours . ' hours', $oldEnd);
$dayStart = strtotime('00:00');
$dayEnd = strtotime('23:59');
$timeSlotArray = array('active'=>$workerSchedule[$keys[$i]]['active'],'start'=>$newStart,'end'=>$newEnd);
$newWorkerSchedule[$keys[$i]] = $timeSlotArray;
}
}
为什么在开始时会创建一个额外的数组?
编辑:根据要求,$ workerSchedule数组:
array(8) {
["Sunday"]=>
array(3) {
["active"]=>
string(2) "no"
["start"]=>
string(5) "00:00"
["end"]=>
string(5) "00:30"
}
["Monday"]=>
array(3) {
["active"]=>
string(2) "no"
["start"]=>
string(5) "00:00"
["end"]=>
string(5) "00:30"
}
["Tuesday"]=>
array(3) {
["active"]=>
string(2) "no"
["start"]=>
string(5) "00:00"
["end"]=>
string(5) "00:30"
}
["Wednesday"]=>
array(3) {
["active"]=>
string(3) "yes"
["start"]=>
string(5) "00:00"
["end"]=>
string(5) "00:30"
}
["Thursday"]=>
array(3) {
["active"]=>
string(2) "no"
["start"]=>
string(5) "00:00"
["end"]=>
string(5) "00:30"
}
["Friday"]=>
array(3) {
["active"]=>
string(2) "no"
["start"]=>
string(5) "00:00"
["end"]=>
string(5) "00:30"
}
["Saturday"]=>
array(3) {
["active"]=>
string(2) "no"
["start"]=>
string(5) "00:00"
["end"]=>
string(5) "00:30"
}
["exceptional_days"]=>
string(0) ""
}
答案 0 :(得分:0)
正在创建它,因为您在$workerSchedule
数组上拥有它。因此,您应该检查var_dump($workerShedule)
。
快速解决问题的方法是从i=1
而不是i=0
开始循环。
但是,您应该总是喜欢使用简单的foreach
,它会让您的代码更具可读性,因为您不需要一直致电keys[$i]
......例如。< / p>
foreach ($array as $key => $value)