在这个例子中,我有两个数组。在我的实际过程中,我将有7个数组,但我在这里保持简单。
int arraySize;
cin >> arraySize;
std::vector<int> array(arraySize, 0);
for (int i=0; i < arraySize; i++)
{
cin >> array[i];
}
cout << array.at(3) << endl;
以下代码将合并两个数组:
$first = array('2015-05-10', '2015-05-17');
$second = array('2015-05-11','2015-05-18');
在实际过程中,1到7个阵列可以合并在一起,但每次组合可能不同。因此,我想构建一组'if'语句来动态构建merge语句。类似于:
$merged = array();
$merged = (array_merge($first,$second));
如果硬编码如下,则会打印合并数组的值。
$dynamicMerge = 'array_merge(';
if($Sunday == '1') {
$dynamicMerge = $dynamicMerge .= '$first' . ',';
}
if($Monday == '1') {
$dynamicMerge = $dynamicMerge .= '$second';
}
$dynamicMerge = $dynamicMerge .= ')';
阵 ( [0] =&gt; 2015年5月10日 [1] =&gt; 2015年5月17日 [2] =&gt; 2015年5月11日 [3] =&gt; 2015年5月18日 )
但是,从上面的动态代码创建的以下代码不会打印出值。
$merged = (array_merge($first,$second));
print_r($merged);
打印出:array_merge($ first,$ second)
需要对动态代码做什么才能打印出“合并数组的值”,而不是返回数组的代码?
提前致谢。
汤姆
答案 0 :(得分:1)
数组合并接受无限数量的数组。
$mergedArr = array_merge($arr1, $arr2, $arr3, $arr4, $arr5, $arr6, $arr7);
或者如果你想这样做......
$mergedArr = [];
if ($monday) {
$mergedArr = array_merge($mergedArr, $mondayArr);
}
if ($tuesday) {
$mergedArr = array_merge($mergedArr, $tuesdayArr);
}
答案 1 :(得分:1)
您也可以通过call_user_func_array
合并这些数组。首先,收集所有需要合并的数组。之后,调用函数:
// loop days from monday to sunday
$days = array(
'Sunday' => 'first',
'Monday' => 'second',
'Tuesday' => 'third',
'Wednesday' => 'fourth',
'Thursday' => 'fifth',
'Friday' => 'sixth',
'Saturday' => 'seventh',
);
$arrays = array();
foreach($days as $day => $var) {
if($$day == 1) {
$arrays[] = $$var;
}
}
$result = call_user_func_array('array_merge', $arrays);