我似乎无法在数组中获得相同的值。第一个值不会出现在输出中。代码比较id并加入与id匹配的值。这是我的代码:
<?php
$pic = array ('1.jpg','2.jpg','3.jpg');
$picid = array('aqua','green','orange');
$size = array('12','24','12');
$sizeid = array ('aqua','green','orange');
$newarray2 = array();
foreach (array_combine($pic, $picid) as $outpic => $outid) {
foreach (array_combine($size, $sizeid) as $outsize => $outsizeid) {
if ($outid == $outsizeid) {
$result = "$outpic $outsize";
$newarray2[]= $result;
} }
$result1 = implode(",", $newarray2);
echo $result1;
$newarray2 = array();
}
?>
我想要的输出是:
1.jpg 12
2.jpg 24
3.jpg 12
但是当我运行代码时,我得到了这个:
2.jpg 24
3.jpg 12
我认为第一个值正在以某种方式被覆盖,但我不知道如何解决这个问题。我做错了什么?
答案 0 :(得分:2)
12上有多个键,只使用最后一个键。
在下面的示例中,我们为键添加了一个附加层,以便键可以重叠。
$result = array();
foreach ($size as $i => $key) {
$result[] = array($key => $sizeid[$i]);
}
foreach ($result as $value) {
foreach($value as $outsize => $outsizeid){
if ($outid == $outsizeid) {
$result = "$outpic $outsize";
$newarray2[]= $result;
}
}
}
答案 1 :(得分:0)
如果考虑调用“array_combine”的结果,这会更有意义。
$picCombo = array_combine($pic, $picid);
$picCombo = array(
'1.jpg' => 'aqua',
'2.jpg' => 'green',
'3.jpg' => 'orange',
);
$sizeCombo = array_combine($size, $sizeid);
$sizeCombo = array(
'12' => 'aqua',
'24' => 'green',
'12' => 'orange',
);
在PHP中,数组定义和foreach语句中的语法是:
key => value
请注意,您的键和值与您想要的相反。 所以,解决方案: