将子数组的值传递给key

时间:2017-10-05 10:08:50

标签: php arrays multidimensional-array

我有这个数组:

//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 ..但是太长了。

3 个答案:

答案 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);

DEMO

答案 2 :(得分:1)

我不知道这背后的逻辑是什么,但你可以试试这个。

我们正在使用array_combinearray_keysarray_fill

Try this code snippet here

$result=  array_combine(
            array_column($array,"id"),//getting column id
            array_fill(0, count($array), array())//mapping that keys with empty array
        );