2015-11-05 2 views
1

Я не могу получить одно и то же значение в массиве. Первое значение просто не появляется на выходе. Код сравнивает идентификаторы и соединяет значения, которые соответствуют id.This мой код:Не удается получить такое же значение в массиве PHP

<?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 Я пробовал, но все равно получил тот же результат –

ответ

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

Используйте карту массива, или я напишу вам пример в секундах –

+0

, пожалуйста, приведи пример. –

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 уникальны. – haz

+0

спасибо, но я действительно не понимаю, как я должен заключить инструкцию foreach –

Смежные вопросы