无法在数组PHP中获得相同的值

时间:2015-11-05 03:52:09

标签: php arrays multidimensional-array arraylist

我似乎无法在数组中获得相同的值。第一个值不会出现在输出中。代码比较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

我认为第一个值正在以某种方式被覆盖,但我不知道如何解决这个问题。我做错了什么?

2 个答案:

答案 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

请注意,您的键和值与您想要的相反。 所以,解决方案:

  1. array_combine($ picid,$ pic); //反转数组
  2. 就像我上面所做的那样定义数组,使用$ picCombo。