组合两个PHP数组;一个作为键,另一个作为值


Combine two PHP arrays; One as key and another as value

我有

<<p>数组strong>
Array
(
    [0] => 1440:480
    [1] => thumb
    [2] => 240:auto
    [3] => small-thumb
    [4] => big-thumb
    [5] => detail-img
    [6] => tiny-thumb
)
数组B
Array
(
    [0] => 1440x480
    [1] => 130xauto
    [2] => 240xauto
    [3] => 100xauto
    [4] => 150xauto
    [5] => 650xauto
    [6] => 45xauto
)

怎么做?

C数组

Array
(
    [1440:480] => 1440x480
    [thumb] => 130xauto
    [240:auto] => 240xauto
    [small-thumb] => 100xauto
    [big-thumb] => 150xauto
    [detail-img] => 650xauto
    [tiny-thumb] => 45xauto
)

您可以简单地使用array_combine()

php.net的例子:

$a = array('green', 'red', 'yellow');
$b = array('avocado', 'apple', 'banana');
$c = array_combine($a, $b);
print_r($c);
输出:

Array
(
    [green]  => avocado
    [red]    => apple
    [yellow] => banana
)
$arr1 = array(0 => '1440:480',
    1 => 'thumb',
    2 => '240:auto',
    3 => 'small-thumb',
    4 => 'big-thumb',
    5 => 'detail-img',
    6 => 'tiny-thumb'
);
$arr2 = array
(
    0 => '1440x480',
    1 => '130xauto',
    2 => '240xauto',
    3 => '100xauto',
    4 => '150xauto',
    5 => '650xauto',
    6 => '45xauto'
);
foreach($arr1 as $key => $val){
    $newArr[$val] = $arr2[$key];
}
print_r($newArr);

Use array_combine:

$c = array_combine($a, $b);
$a = array(
    "1440:480",
    "thumb",
    "240:auto",
    "small-thumb",
    "big-thumb",
    "detail-img",
    "tiny-thumb"
);
$b = array(
    "1440x480",
    "130xauto",
    "240xauto",
    "100xauto",
    "150xauto",
    "650xauto",
    "45xauto"
);
function merge_arrays($keys, $values) {
   $merged = array();
   for ($i = 0; $i < count($keys); $i++) {
     $merged[$keys[$i]] = $values[$i];
   }
   return $merged;
}
$c = merge_arrays($a, $b);

不是最复杂的算法。假设两个数组的大小与给定示例中相同,可以遍历第一个数组,并使用相同的id将它们组合在一起:

$c = array();
foreach($a as $id => $value){
    $c[$value] = $b[$id];
}