数组结合另一个数组 - 如何优雅地做到这一点

时间:2014-02-05 13:33:35

标签: php arrays

我有两个数组,一个整数数组和一个字符串数组。我想把这两者结合起来,但这对我来说很麻烦。

基本上,每个数组中的第一个值将被关联,每个数组的第二个值将相互关联,第三个相互关联,依此类推。

我有一个foreach循环迭代并使用$result作为数组键,如下所示:

foreach ($results as $result) {

然后是一个基于所述字符串生成$ order的函数。

然后我试图将每个值关联起来,就像我说的那样:

array('8' => 'value', '8' => 'value', '6' => 'anothervalue', '6' => 'anothervalue');

这是我的代码。

$order = resource_library_apachesolr_resource_type_order($resource_type);
$result['resource_type'] = $resource_type;
$newresults = array($order => $result);

$order不是迭代的,所以我该如何制作它以便将$order的迭代值与当前迭代值$result结合起来?

2 个答案:

答案 0 :(得分:0)

好吧,既然你有重复的键,就不能使用 array_combine

你可能需要有点创意。也许转换为字符串并在整数部分之前添加0 ...

实施例

$a1 = array(1,1,2,3,3);
$a2 = array('a', 'b', 'c', 'd', 'e');
$a3 = array();

for ($i=0; $i<count($a1); ++$i) {
    $key = (string) $a1[$i];
    $val = (String) $a2[$i];
    while (isset($a3[$key])) {
        $key = "0$key";
    }
    $a3[$key] = $val;
}

var_dump($a3);

foreach ($a3 as $key => $val) {
    $key = (int) $key;
    print "$key=>$val<br>";
}

输出:

array (size=5)
  1 => string 'a' (length=1)
  '01' => string 'b' (length=1)
  2 => string 'c' (length=1)
  3 => string 'd' (length=1)
  '03' => string 'e' (length=1)
1=>a
1=>b
2=>c
3=>d
3=>e

答案 1 :(得分:0)

我不知道你为什么需要这个,但是如果我想做那样的事我会做:

$arr = array();
foreach($numbers as $i=>$num){
    $arr[$num][] = $strings[$i];
}

并将获得:

array(
    1 => array(
        a,
        b
    ),
    2 => array(
        c
    ),
    3 => array(
        d,
        e
    )
)