在CakePHP中合并2个数组

时间:2011-02-02 07:32:58

标签: php arrays

我有两个数组array1和array2。我想将这两个数组合并为一个,并在下拉列表中显示合并数组的值。我希望值的方式是第一个数组的值 - 第二个数组的值。

例如:

$employeePlaces1 = array(1, 2, 4,9);
$employeePlaces2 = array(3, 5, 6,7);

我想在下拉列表中显示$employeePlaces1[0]-$employeePlaces2[1]$employeePlaces1[0]-$employeePlaces2[1]

    1-3,
    2-5,
    4-6, 
    9-7.

我该怎么做?

5 个答案:

答案 0 :(得分:2)

您可以使用array_diff功能

http://www.php.net/manual/en/function.array-diff.php

回答编辑过的问题

//assuming both the arrays have the same length
echo "<select>";
for($i=0;$i<count($employeePlaces1);$i++)
{
    echo "<option>".$employeePlaces1[i]." - ".$employeePlaces2[i]."</option>";
}
echo "</select>";

答案 1 :(得分:2)

$employee1 = array(1, 2, 4, 9);
$employee2 = array(3, 5, 6, 7);

function doMerge($n, $m) {
    return $n.'-'.$m;
}


$c = array_map("doMerge", $employee1, $employee2);

print_r($c);

或者使用lambda style functions的PHP 5.3语法:

$c = array_map(function($n, $m) {return $n.'-'.$m;}, $employee1, $employee2);

答案 2 :(得分:1)

以下是您可以手动循环并将值匹配的方法。

$list = array();
for($i=0; $i<=count($employeePlaces1); $i++) {
    $list[] = $employeePlaces1[$i].'-'.$employeePlaces2[$i];
}

没有经过测试,但应该是你需要的要点。

答案 3 :(得分:1)

答案 4 :(得分:0)

为什么不绕过数组,也就是说要做好。然后你可以继续做其他事情!

编辑以回应评论1:

CakePHP期待:

<?php echo $this->Form->input('field', array('options' => array(
    'Value 1'=>'Label 1',
    'Value 2'=>'Label 2',
    'Value 3'=>'Label 3'
 ))); ?>

所以像(伪代码):

resultsArray = array();
loop
    resultsArray[i] = inputArray_1[i]-inputArray_2[i];
endloop
PHP中的

(假设array1的大小&lt; = array2的大小):

for($i=0;$i<count($inputArray_1);$i++)
{
    $resultsArr[$i] = $inputArray_1[$i]-$inputArray_2[$i];
}