说,我有一个数月的数组
$months = array('Jan', 'Feb', 'Mar'...'Dec');
另一个,有几天(比如2010年)
$mdays = array(31, 28, 31...31);
我想将这两个数组合并/组合成这样的数组:
$monthdetails[0] = ('month' => 'Jan', 'days' => 31)
$monthdetails[1] = ('month' => 'Feb', 'days' => 28)
...
$monthdetails[11] = ('month' => 'Dec', 'days' => 31)
我可以遍历两个数组并填充$monthdetails
。我想知道是否有任何功能/更简单的方法来实现相同的结果。
谢谢! 拉吉
答案 0 :(得分:3)
鉴于两个数组的顺序相同:
foreach ($months as $key => $value) { $monthdetails[$key] = array('month' => $value, 'days' => $mdays[$key]); }
答案 1 :(得分:1)
$monthdetails = array_combine($months, $mdays);
echo $monthdetails['Jan']; //31
这不是您正在寻找的,但您应该调整系统以使用此方法。
答案 2 :(得分:1)
假设两个数组的大小相同:
$count = count($months);
$monthdetails = array();
for ($i=0; $i<$count; $i++) {
$monthdetails[] = array('month' => $months[$i], 'days' => $mdays[$i]);
}
编辑:与其他答案一样,array_combine()
立即浮现在脑海中,但它并不能完全解决问题。
编辑2:我仍然建议不要使用这种直接方法,因为它没有处理闰年的可能性。重新发明日期时间轮通常不是一个好主意。
答案 3 :(得分:0)
如果您可以使用这样的数组结构:
Array
(
[Jan] => 31
[Feb] => 28
[Mar] => 31
...
[Dec] => 31
)
然后array_combine()是你的朋友:
$monthdetails = array_combine($months, $mdays);
这可能是最快的方式......
答案 4 :(得分:0)
我相信array_combine可以做你想要的: http://www.php.net/manual/en/function.array-combine.php
它使用第一个数组作为键,第二个数组使用值。
答案 5 :(得分:0)
将两个数组与array_combine结合使用? http://www.php.net/manual/en/function.array-combine.php
答案 6 :(得分:0)
function month_callback( $month, $day ){
return array( 'month' => $month,
'day' => $day );
}
$months = array( 'Jan', 'Feb', 'Mar' );
$days = array( 31, 28, 31 );
$monthdetails = array_map( 'month_callback', $months, $days );
print_r( $monthdetails );