我有这个数组:
//28 days ago
java.util.Date thresholdPast28Date = BasicUtils.setTimeInDays(sqlTodayDate, -28);
//56 days ago
java.util.Date thresholdPast56Date = BasicUtils.setTimeInDays(sqlTodayDate, -56);
我想获得这个:
public static Date setTimeInDays(Date startingTime, Integer days){
Calendar c = Calendar.getInstance();
c.setTime(startingTime);
c.add(Calendar.DATE, days);//a day in the future or past
return c.getTime();
}
我怎么能以最短的方式做到这一点?
我可以使用array_map,然后是array_flip,然后是array_walk ..但是太长了。
答案 0 :(得分:2)
array_column
提取密钥,array_fill_keys
创建新数组:
$arr = array(0 => array('id' => "AMO"), 1 => array('id' => "PAT"));
$res = array_fill_keys(array_column($arr, 'id'), []);
答案 1 :(得分:1)
简单地循环遍历数组并将其id设置为新的数组键
$arr = array(0 => array('id' => "AMO"), 1 => array('id' => "PAT"));
foreach($arr as $value)
{
$new_arr[$value['id']] = array();
}
print_r($new_arr);
答案 2 :(得分:1)
我不知道这背后的逻辑是什么,但你可以试试这个。
我们正在使用array_combine
,array_keys
和array_fill
$result= array_combine(
array_column($array,"id"),//getting column id
array_fill(0, count($array), array())//mapping that keys with empty array
);