我在for..loop
中有以下代码有没有办法可以将值添加到数组的开头?
$data = array();
$initial = strtotime('11:00:00');
for (; $initial < strtotime("23:00:59"); $initial = strtotime("+15 minutes", $initial)) {
if ($initial > strtotime("+45 minutes", time())) {
$row['value'] = date('Hi', $initial);
$row['label'] = date('H:i', $initial);
$data['data'][] = $row;
}
}
我想将以下值添加到数组的顶部。我尝试过使用array_unshift
,但我认为它不支持键值对。
if(!isBetween('22:00', '09:59', date('H:i'))) {
$row['value'] = "asap";
$row['label'] = "ASAP";
}
我的数组输出
{
"data": [
{
"value": "1145",
"label": "11:45"
}
]
}
我想得到这个
{
"data": [
{
"value": "asap",
"label": "ASAP"
},{
"value": "1145",
"label": "11:45"
},
]
}
答案 0 :(得分:3)
如果正确传递参数,则取消移位应该有效:
array_unshift($data["data"], $prepend);
或者,您可以使用array_merge
,如下所示:
$data["data"] = array_merge(array($prepend), $data["data"]);
使用以下示例数据:
$data = [
"data" => [
[
"value" => "1145",
"label" => "11:45"
]
]
];
$prepend = [
"value" => "asap",
"label" => "ASAP"
];
$data["data"] = array_merge(array($prepend), $data["data"]);
print_r($data);
您将获得此输出(使用两种解决方案):
Array (
[data] => Array (
[0] => Array (
[value] => asap
[label] => ASAP
)
[1] => Array (
[value] => 1145
[label] => 11:45
)
)
)
答案 1 :(得分:0)
如果你需要在没有重新索引键和/或需要预先设置键值对的情况下为数组添加一些东西,你可以使用这个短函数:
function array_unshift_assoc(&$arr, $key, $val) {
$arr = array_reverse($arr, true);
$arr[$key] = $val;
return = array_reverse($arr, true);
}