0
我有一個給定的陣列,例如:最終元件()不進行比較
Array
(
[0] => Array
(
[product_colour_sizes_id] => 31822
[product_colour_sizes_product_id] => 1495
[product_colour_sizes_option_value_colour_id] => 377
[product_colour_sizes_option_value_size_id] => 297
[quantity] => 999
[product_colour_sizes_name_sizes] => 6
[product_colour_sizes_name_colours] => Grey
)
[1] => Array
(
[product_colour_sizes_id] => 31823
[product_colour_sizes_product_id] => 1495
[product_colour_sizes_option_value_colour_id] => 377
[product_colour_sizes_option_value_size_id] => 295
[quantity] => 999
[product_colour_sizes_name_sizes] => 7
[product_colour_sizes_name_colours] => Grey
)
[2] => Array
(
[product_colour_sizes_id] => 31824
[product_colour_sizes_product_id] => 1495
[product_colour_sizes_option_value_colour_id] => 377
[product_colour_sizes_option_value_size_id] => 242
[quantity] => 999
[product_colour_sizes_name_sizes] => 8
[product_colour_sizes_name_colours] => Grey
)
[3] => Array
(
[product_colour_sizes_id] => 31825
[product_colour_sizes_product_id] => 1495
[product_colour_sizes_option_value_colour_id] => 377
[product_colour_sizes_option_value_size_id] => 296
[quantity] => 999
[product_colour_sizes_name_sizes] => 9
[product_colour_sizes_name_colours] => Grey
)
[4] => Array
(
[product_colour_sizes_id] => 31826
[product_colour_sizes_product_id] => 1495
[product_colour_sizes_option_value_colour_id] => 377
[product_colour_sizes_option_value_size_id] => 243
[quantity] => 999
[product_colour_sizes_name_sizes] => 10
[product_colour_sizes_name_colours] => Grey
)
)
我然後有一個循環foreach()
其中循環通過上述數據,並減少到一個單一的陣列。循環要做到這一點在這裏:
foreach ($product_combinations as $key => $product_combination){
// Set the offiset key.
$offset_key = $key + 1;
if(array_key_exists($offset_key, $product_combinations)){
echo 'Yes' . '<br>';
}
// Check if the array key exists.
if (array_key_exists($offset_key, $product_combinations)) {
// Core logic.
if ($product_combinations[$offset_key]['product_colour_sizes_name_colours'] == $product_combinations[$key]['product_colour_sizes_name_colours']) {
$color = $product_combinations[$key]['product_colour_sizes_name_colours'];
$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' . $id_increment] =$product_combination['product_colour_sizes_option_value_size_id'];
$id_increment++;
}
// Add the sizes to the color array.
$colours[$color] = $sizes;
} // if (==)
} // foreach
問題是,這個循環不比較最後索引數組。我已經嘗試了這個邏輯的幾次迭代無濟於事。這是它沒有循環的最後一個數組。
[4] => Array
(
[product_colour_sizes_id] => 31826
[product_colour_sizes_product_id] => 1495
[product_colour_sizes_option_value_colour_id] => 377
[product_colour_sizes_option_value_size_id] => 243
[quantity] => 999
[product_colour_sizes_name_sizes] => 10
[product_colour_sizes_name_colours] => Grey
)
從遍歷數據的結果,目前給我這樣的結果:
Array
(
[Grey] => Array
(
[297] => 6
[quantity] => 999
[product_colour_sizes_id] => 31825
[product_colour_sizes_product_id] => 1495
[product_colour_sizes_option_value_colour_id] => 377
[product_colour_sizes_option_value_size_id] => 297
[295] => 7
[product_colour_sizes_option_value_size_id1] => 295
[242] => 8
[product_colour_sizes_option_value_size_id2] => 242
[296] => 9
[product_colour_sizes_option_value_size_id3] => 296
)
)
不過,我希望它看起來就像是這樣的,隨着最後一個元素進行比較,包括:
[Grey] => Array
(
[quantity] => 999
[product_colour_sizes_id] => 31825
[product_colour_sizes_product_id] => 1495
[product_colour_sizes_option_value_colour_id] => 377
[product_colour_sizes_option_value_size_id] => 297
[295] => 7
[product_colour_sizes_option_value_size_id1] => 295
[242] => 8
[product_colour_sizes_option_value_size_id2] => 242
[296] => 9
[product_colour_sizes_option_value_size_id3] => 296
[297] => 6
[product_colour_sizes_option_value_size_id4] => 243
[243] => 10
)
)
難道是因爲您立即將$ key加1,因此訪問數組中的下一行? '$ offset_key = $ key + 1;' – bloodyKnuckles
'if(array_key_exists($ offset_key,$ product_combinations))'將在最後一個元素上總是失敗,因爲它檢查下一個索引是否存在於數組中,顯然不會當你到最後。 – Barmar