Кажется, я не могу получить одинаковое значение в массиве. Первое значение просто не появляется на выходе. Код сравнивает идентификатор и объединяет значения, соответствующие идентификатору. Это мой код:
<?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
Я думаю, что первое значение как-то переписывается, но я не знаю, как это происходит. Что я делаю не так?
У вас есть несколько клавиш на 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;
}
}
}
Это имеет смысл, если вы считаете результат вызова "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
Обратите внимание, что ваши ключи и значения противоположны тому, что вы хотите. Итак, решения:
array_push()
.