У меня есть продукты, которые имеют идентификатор, цвет и размер кабеля. Я хочу уважать порядок массива размера кабеля с идентификаторами продуктов следующим образом:
cable Array
(
[5619] => 10 - Inch
[5552] => 10 - Foot
[8211] => 10 - Inch
[5733] => 10 - Foot
)
поэтому этот массив кабелей подобен нашей карте сортировки, какой бы продукт, который у нас был в этом примере, должен иметь 10-дюймовый первый и 10-футовый следующий, и они поставляются с идентификаторами продуктов.
тогда у меня есть цвета
product Array
(
[Green] => Array
(
[5552] => 10 - Foot
[5619] => 10 - Inch
)
[Pink] => Array
(
[5733] => 10 - Foot
[8211] => 10 - Inch
)
[Black] => Array
(
[4564] => 10 - Foot
)
)
в этом примере, когда у нас есть более одного размера для цвета, он должен быть заказан на основе массива кабелей розового и зеленого цвета:
[Pink] => Array
(
[8211] => 10 - Inch
[5733] => 10 - Foot
)
because 8211 came before 5733 in cable array.
[Green] => Array
(
[5619] => 10 - Inch
[5552] => 10 - Foot
)
as well because 5619 came before 5552 in cable array.
Я сделал это:
function OrderSizeAndColorByMerging($cablesizes, $productarray) {
foreach ($cablesizes as $id => $size):
foreach ($productarray as $color => $sizes):
if ($sizes[$id]):
$productarray[$color] = $cablesizes;
endif;
endforeach;
endforeach;
return $productarray;
}
но это неправильно, не знаю, как я могу это достичь.
foreach( $cable as $key => $value ){
foreach ($product as $keyarray){
if (array_key_exists( $key , $keyarray ))
{
echo array_key_exists( $key , $keyarray );
unset($keyarray[$key]);
array_unshift($arr ,$key=>value);// not sure if this is ever going to work, but i am giving u a general idea (never tested it)
break;
}
}
}
print_r($array2);
как сказал QuakeCore в своем коде, мне пришлось отключить массив внутри цветов, а затем снова назначить их. поэтому теперь мой код работает, надеюсь, что он может помочь некоторым сверстникам в будущем:
function OrderSizeAndColorByMerging($cablesizes, $productarray) {
foreach ($cablesizes as $id => $size):
foreach ($productarray as $color=>$array):
if (array_key_exists($id, $array)) {
unset($productarray[$color][$id]);
$productarray[$color][$id]=$size;
}
endforeach;
endforeach;
return $productarray;
}