Не может получить то же значение в массиве PHP

1

Кажется, я не могу получить одинаковое значение в массиве. Первое значение просто не появляется на выходе. Код сравнивает идентификатор и объединяет значения, соответствующие идентификатору. Это мой код:

<?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
    попробуйте использовать array_push() .
  • 0
    @PrafullaKumarSahu Я попробовал это, но все же получил тот же результат
Теги:
arrays
arraylist
multidimensional-array

2 ответа

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;
  }
 }
}
  • 0
    да, но как мне получить эти значения с помощью нескольких ключей?
  • 0
    Используйте карту массива, или я напишу вам пример в секунду
Показать ещё 3 комментария
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.
  • 0
    Очевидно, что вы должны убедиться, что идентификаторы в $ picId и $ sizeId уникальны.
  • 0
    спасибо, но я не совсем понимаю, как я должен сформулировать утверждение foreach

Ещё вопросы

Сообщество Overcoder
Наверх
Меню