2015-11-05 24 views
1

我似乎無法在數組中獲得相同的值。第一個值不會出現在輸出中。該代碼比較ID和加入匹配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中的ID是唯一的。 – haz

+0

謝謝,但我真的不知道應該如何構建foreach語句 –