我有一系列图片:
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)
)
除了显而易见的创建循环并根据值检查值之外,是否有更简单的方法来实现这一目标?
答案 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++;
}