Не удается получить то же значение в массиве переполнения стека

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

<?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

Я думаю, что первое значение как-то перезаписывается, но я не знаю, как это обойти. Что я делаю неправильно?

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;
}
}
}
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.
0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector