![](/img/trans.png)
[英]How to optimize the SQL query and add more array elements to the existing array?
[英]Add elements to existing array
我有一個看起來像這樣的數組
array(3) {
[0]=>
array(4) {
["sort"]=>
string(0) ""
["day"]=>
string(2) "2"
["month"]=>
string(1) "8"
["year"]=>
string(4) "2015"
}
[1]=>
array(4) {
["sort"]=>
string(0) ""
["day"]=>
string(1) "5"
["month"]=>
string(1) "8"
["year"]=>
string(4) "2015"
}
[2]=>
array(4) {
["sort"]=>
string(0) ""
["day"]=>
string(1) "9"
["month"]=>
string(1) "8"
["year"]=>
string(4) "2015"
}
}
如您所見,它由排序,日期,月份和年份組成。 我想將新元素添加到值“ day” +1的同一數組中。
如果數組中包含2015年8月8日,則還應包含2015年8月9日。我需要一種方法來提取值,計算新日期並放回所有日期。 結果應如下所示:
array(3) {
[0]=>
array(4) {
["sort"]=>
string(0) ""
["day"]=>
string(2) "2"
["month"]=>
string(1) "8"
["year"]=>
string(4) "2015"
}
[1]=>
array(4) {
["sort"]=>
string(0) ""
["day"]=>
string(1) "5"
["month"]=>
string(1) "8"
["year"]=>
string(4) "2015"
}
[2]=>
array(4) {
["sort"]=>
string(0) ""
["day"]=>
string(1) "9"
["month"]=>
string(1) "8"
["year"]=>
string(4) "2015"
}
[3]=>
array(4) {
["sort"]=>
string(0) ""
["day"]=>
string(2) "3"
["month"]=>
string(1) "8"
["year"]=>
string(4) "2015"
}
[4]=>
array(4) {
["sort"]=>
string(0) ""
["day"]=>
string(1) "6"
["month"]=>
string(1) "8"
["year"]=>
string(4) "2015"
}
[5]=>
array(4) {
["sort"]=>
string(0) ""
["day"]=>
string(1) "10"
["month"]=>
string(1) "8"
["year"]=>
string(4) "2015"
}
}
理想情況下,如果數組中所有日期都相同,則它還應排除新日期。
用新項目創建數組並將其與舊數組合並
$temp = array();
foreach($array as $item)
$temp[] = array_replace($item, array("day" => $item["day"]+1));
$res = array_merge($array, $temp);
排除重復的一天
$days = array_reduce($array,
function($a, $i) { $a[$i['day']] = 1; return $a; ; },
array());
$temp = array();
foreach($array as $item)
if (! isset($days[$item["day"]+1]))
$temp[] = array_replace($item, array("day" => $item["day"]+1));
$res = array_merge($array, $temp);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.