我有值的數組這樣:PHP的foreach()的最後一個值不被比較
Array
(
[0] => Array
(
[product_colour_sizes_id] => 37105
[product_colour_sizes_product_id] => 810
[product_colour_sizes_option_value_colour_id] => 61
[product_colour_sizes_option_value_size_id] => 904
[quantity] => 999
[product_colour_sizes_name_sizes] => 16-165
[product_colour_sizes_name_colours] => Red
)
[1] => Array
(
[product_colour_sizes_id] => 37104
[product_colour_sizes_product_id] => 810
[product_colour_sizes_option_value_colour_id] => 61
[product_colour_sizes_option_value_size_id] => 905
[quantity] => 999
[product_colour_sizes_name_sizes] => 17-175
[product_colour_sizes_name_colours] => Red
)
[2] => Array
(
[product_colour_sizes_id] => 37103
[product_colour_sizes_product_id] => 810
[product_colour_sizes_option_value_colour_id] => 61
[product_colour_sizes_option_value_size_id] => 906
[quantity] => 999
[product_colour_sizes_name_sizes] => 185-19
[product_colour_sizes_name_colours] => Red
)
[3] => Array
(
[product_colour_sizes_id] => 37102
[product_colour_sizes_product_id] => 810
[product_colour_sizes_option_value_colour_id] => 61
[product_colour_sizes_option_value_size_id] => 907
[quantity] => 999
[product_colour_sizes_name_sizes] => 19.5
[product_colour_sizes_name_colours] => Red
)
)
我然後有一個foreach循環,其在上述數據進行迭代,並且減小了每個陣列到一個單一的行對應到不同的[product_colour_sizes_name_sizes]
。不過,我有一個問題,最後一個數組沒有被比較。這是我的循環:
foreach($product_combinations as $key => $product_combination){
if($key > -1){
if($product_combinations[$key+1]['product_colour_sizes_name_colours']
== $product_combinations[$key]['product_colour_sizes_name_colours']
){
$color = $product_combinations[$key]['product_colour_sizes_name_colours'];
$color['name'] = $color;
$id = $product_combinations[$key]['product_colour_sizes_option_value_size_id'];
$sizes[$id] = $product_combinations[$key]['product_colour_sizes_name_sizes'];
$quantity = $product_combinations[$key]['quantity'];
$sizes['quantity'] = $quantity;
/* Dont forget theses*/
$sizes['product_colour_sizes_id'] = $product_combination['product_colour_sizes_id'];
$sizes['product_colour_sizes_product_id'] = $product_combination['product_colour_sizes_product_id'];
$sizes['product_colour_sizes_option_value_colour_id'] = $product_combination['product_colour_sizes_option_value_colour_id'];
$sizes["product_colour_sizes_option_value_size_id$x"] =$product_combination['product_colour_sizes_option_value_size_id'];
$x++;
} else {
array_push($colours,
array(
$color => $sizes
));
unset($sizes);
$x = 0;
}
}
}
本質現在,我的第四([3]
)陣列被相比, $product_combinations[$key+1] == $product_combinations[$key]['product_colour_sizes_name_colours']
與$key+1
是空值。
我知道如上所述的問題,但想不出用我目前的邏輯來克服它的好方法,任何人都可以想到一個解決方案嗎?
編輯 什麼,我試圖做的是減少排下來到這個確切的陣列結構(與上次陣列包括課程,目前不能添加的):
Array
(
[0] => Array
(
[Red] => Array
(
[904] => 16-165
[quantity] => 999
[product_colour_sizes_id] => 37103
[product_colour_sizes_product_id] => 810
[product_colour_sizes_option_value_colour_id] => 61
[product_colour_sizes_option_value_size_id0] => 904
[905] => 17-175
[product_colour_sizes_option_value_size_id1] => 905
[906] => 185-19
[product_colour_sizes_option_value_size_id2] => 906
)
)
)
你不需要在任何地方對'$ key + 1'類型的鍵進行硬編碼,使用多維數組應該是一個很好的選擇。如果無法繞過它,請確保在嘗試訪問它之前檢查數組密鑰是否存在。 –
它可能爲空,因爲它的字符而不是數字。嘗試這樣 - [product_colour_sizes_name_colours] =>「紅色」 – Tasos
@Tasos這只是通過'print_r'而不是真正的數組轉儲數組。如果你關心的是這段代碼中的問題,我創建了一個基於我在答案中發佈的值的測試數組。 – JakeGould