动态连接PHP代码

时间:2015-05-06 23:20:37

标签: php arrays

在这个例子中,我有两个数组。在我的实际过程中,我将有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)

需要对动态代码做什么才能打印出“合并数组的值”,而不是返回数组的代码?

提前致谢。

汤姆

2 个答案:

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

Sample Output