【问题标题】:Can't get the same value in array PHP无法在数组 PHP 中获得相同的值
【发布时间】:2016-02-05 19:21:08
【问题描述】:

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

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

【问题讨论】:

  • 尝试使用array_push()
  • @PrafullaKumarSahu 我试过了,结果还是一样

标签: php arrays multidimensional-array arraylist


【解决方案1】:

您在 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;
  }
 }
}

【讨论】:

  • 是的,但是如何使用多个键获取这些值?
  • 使用数组映射,否则我会在几秒钟内给你写一个例子
  • 请举个例子。
  • @AlvinOfori-Adjei 在这里,抱歉花了这么长时间,我认为可能有更好的方法 :) 这有点令人困惑 IMO
【解决方案2】:

如果您考虑调用“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。

【讨论】:

  • 显然,您有责任确保 $picId 和 $sizeId 中的 ID 是唯一的。
  • 谢谢,但我真的不明白我应该如何收缩 foreach 语句
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-24
  • 1970-01-01
  • 1970-01-01
  • 2020-10-06
  • 1970-01-01
相关资源
最近更新 更多