根据数组值组合数组?

时间:2014-06-25 13:13:20

标签: php

我有一系列图片:

array(
    array('title'=> 'img_one', 'width' => 100),
    array('title'=> 'img_two', 'width' => 200)
    //etc
)

我也有一系列宽度和高度。

array(
    array('w'=>100, 'h' => 100),
    array('w'=>200, 'h' => 999)
)

我需要遍历第一个数组,并且第一个和第二个数组中的宽度匹配,将高度添加到第一个数组,所以我得到类似的结果:

array(
    array('title'=> 'img_one', 'width' => 100, height=>100),
    array('title'=> 'img_two', 'width' => 200, height=>999)
)

除了显而易见的创建循环并根据值检查值之外,是否有更简单的方法来实现这一目标?

3 个答案:

答案 0 :(得分:1)

PHP 5.5 +的不错解决方案:

$map = array_column($widthsHeights, 'h', 'w');
$images = array_map(function (array $image) use ($map) {
    return $image + ['height' => $map[$image['width']];
}, $images);

假设所有可能的宽度在数组中都有一个条目。

答案 1 :(得分:0)

此问题的可能解决方案是:

$images = array(
    array('title'=> 'img_one', 'width' => 100),
    array('title'=> 'img_two', 'width' => 200)
);

$sizes = array(
    array('w'=>100, 'h' => 100),
    array('w'=>200, 'h' => 999)
);

foreach($images as &$image) {
    foreach($sizes as $size) {
        if ($image['width'] == $size['w']) {
            $image['height'] = $size['h'];
            break;
        }
    }
}

答案 2 :(得分:0)

 $images = array(
            array('title'=> 'img_one', 'width' => 100),
            array('title'=> 'img_two', 'width' => 200)
        );


$sizes = array(
    array('w'=>100, 'h' => 100),
    array('w'=>200, 'h' => 999)
);
$order=0;

foreach($images as &$image) {

       $image['height'] = $sizes[$order]['h'];


$order++;
    }