Я изначально разместил это Other Question и расширил свой вопрос и перешел на этот вопрос.сортировка уникальных значений в php-массиве
Я пытаюсь разделить массив и удалить некоторые частичные уникальные значения из MYSQL SELECT QUERY
с PHP
.
Вот из положить я получаю ...
Array ([Order_ID] => 1 [Customer_ID] => 42534 [OrderDate] => [lotCode] => 401042 [qty] => 8 [0] =>
Array ([0] => 1 [Order_ID] => 1 [1] => 42534 [Customer_ID] => 42534 [2] => [OrderDate] => [3] => 993647 [lotCode] => 993647 [4] => 9 [qty] => 9) [1] =>
Array ([0] => 1 [Order_ID] => 1 [1] => 42534 [Customer_ID] => 42534 [2] => [OrderDate] => [3] => 401040 [lotCode] => 401040 [4] => 55 [qty] => 55) [2] =>
Array ([0] => 1 [Order_ID] => 1 [1] => 42534 [Customer_ID] => 42534 [2] => [OrderDate] => [3] => 401040 [lotCode] => 401040 [4] => 66 [qty] => 66) [3] =>
Array ([0] => 1 [Order_ID] => 1 [1] => 42534 [Customer_ID] => 42534 [2] => [OrderDate] => [3] => 401042 [lotCode] => 401042 [4] => 8 [qty] => 8))
Array ([Order_ID] => 7 [Customer_ID] => 42534 [OrderDate] => [0] =>
Array ([0] => 2 [Order_ID] => 2 [1] => 42534 [Customer_ID] => 42534 [2] => [OrderDate] => [3] => [lotCode] => [4] => [qty] =>) [1] =>
Array ([0] => 3 [Order_ID] => 3 [1] => 42534 [Customer_ID] => 42534 [2] => [OrderDate] => [3] => [lotCode] => [4] => [qty] =>) [2] =>
Array ([0] => 4 [Order_ID] => 4 [1] => 42534 [Customer_ID] => 42534 [2] => [OrderDate] => [3] => [lotCode] => [4] => [qty] =>) [3] =>
Array ([0] => 5 [Order_ID] => 5 [1] => 42534 [Customer_ID] => 42534 [2] => [OrderDate] => [3] => [lotCode] => [4] => [qty] =>) [4] =>
Array ([0] => 6 [Order_ID] => 6 [1] => 42534 [Customer_ID] => 42534 [2] => [OrderDate] => [3] => [lotCode] => [4] => [qty] =>) [5] =>
Array ([0] => 7 [Order_ID] => 7 [1] => 42534 [Customer_ID] => 42534 [2] => [OrderDate] => [3] => [lotCode] => [4] => [qty] =>))
Из этого запроса ...
<?php
$withLotCodes = array();
$noLotCodes = array();
$OrdersToShip2 = mysql_query("
SELECT o.Order_ID, o.Customer_ID, o.OrderDate, olc.lotCode, olc.qty
FROM Orders o
LEFT JOIN OrdersLotCodes olc ON o.Order_ID = olc.Order_ID
WHERE o.LotCoded = 0 ORDER BY o.Order_ID");
if($OrdersToShip2) {
while ($info = mysql_fetch_array($OrdersToShip2))
{
if(!isset($info['lotCode'])){
// if NO lotCode
$noLotCodes['Order_ID'] = $info['Order_ID'];
$noLotCodes['Customer_ID'] = $info['Customer_ID'];
$noLotCodes['OrderDate'] = $info['OrderDate'];
array_push($noLotCodes,$info);
}else{
// if YES lotCode
$withLotCodes['Order_ID'] = $info['Order_ID'];
$withLotCodes['Customer_ID'] = $info['Customer_ID'];
$withLotCodes['OrderDate'] = $info['OrderDate'];
$withLotCodes['lotCode'] = $info['lotCode'];
$withLotCodes['qty'] = $info['qty'];
array_push($withLotCodes,$info);
}
}
}else{
echo "encountered an error.".mysql_error();
}
print_r($withLotCodes);
echo '<br><br>';
print_r($noLotCodes);
mysql_close($conn);
?>
Как вы видите, он ломает array
вверх в заказы, которые имеют 'lotCodes'
и заказов, которые этого не делают, теперь у меня есть два arrays
.
Теперь я пытаюсь удалить дубликаты значений для 'Order_ID'
'Customer_ID
& 'OrderDate'
, которые имеют самые 'lotCode'
значения в первом array
. Я только хочу, чтобы они появлялись один раз, после чего значения lotCode были такими, какими они могут быть.
Я попытался использовать array_unique
, но удалил остальное с lotCodes
, что мне нужно для вывода.
Итак, что я иду будет что-то вроде:
Order_ID, Customer_ID, OrderDate, lotCode, qty, lotCode, qty, lotCode, qty, lotCode, qty
Вместо:
Order_ID, Customer_ID, OrderDate, lotCode, qty
Order_ID, Customer_ID, OrderDate, lotCode, qty
Order_ID, Customer_ID, OrderDate, lotCode, qty
Order_ID, Customer_ID, OrderDate, lotCode, qty
Я надеюсь, что это ясно.
Любые предложения по этому парню?
То, что я пытаюсь сделать получает значения для каждого 'lotCode' и' qty', которые являются частью 'Order_ID', не получая' Order_ID' более одного раза. Я просто не могу понять правильное утверждение. – Monty
@Monty Хорошо, я изменил свой код, чтобы предоставить это, и добавил немного больше объяснений. – liquorvicar