Отфильтровать строки 2D-массива, если они не связаны со строками другого 2D-массива, и объединить их данные.Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Отфильтровать строки 2D-массива, если они не связаны со строками другого 2D-массива, и объединить их данные.

Сообщение Anonymous »

У меня есть два массива, которые создаются в результате SQL-запросов к разным базам данных.
Один создается в таком формате:

Код: Выделить всё

$data = array(
[$sku] => array(
['LocalSKU'] => $sku,
['Price'] => $msrp,
['Price2'] => $wholesale,
['Price3'] => $distributor,
['Price4'] => $map
)
)
Другой массив имеет следующий формат:

Код: Выделить всё

$matchme = array(
[0] => array(
['entity_id'] => $entity_id,
['sku'] => $sku,
['type_id'] => $type_id
)
)
В настоящее время я могу получить сопоставление отдельных данных через:

Код: Выделить всё

echo $matchme[0]['sku'];
echo $matchme[0]['entity_id'];
echo $matchme[0]['type_id'];
echo $data[$matchme[0]['sku']]['Price'];
echo $data[$matchme[0]['sku']]['Price2'];
echo $data[$matchme[0]['sku']]['Price3'];
echo $data[$matchme[0]['sku']]['Price4'];
Однако, когда я пытаюсь объединить совпадающие строки в обоих массивах, я получаю пустой массив. Массив $data содержит 74 уникальных $sku, а $matchme — это результат проверки этих $sku по базе данных и возврата массива из 61 элемента. Таким образом, объединенный массив должен содержать 61 элемент с соответствующими данными о ценах на основе $sku.
Как я пытаюсь построить объединенный массив, показано ниже. Может ли кто-нибудь указать мне, что я из себя представляю? делаете что-то не так?

Код: Выделить всё

foreach ($matchme as $key) {
if (in_array($matchme[$key]['sku'], $data)) {
$matched_luggage[$matchme[$key]['sku']][] = array(
'sku' => $matchme[$key]['sku'],
'entity_id' => $matchme[$key]['entity_id'],
'type_id' => $matchme[$key]['type_id'],
'MSRP' => $data[$matchme[$key]['sku']]['Price'],
'Wholesale' => $data[$matchme[$key]['sku']]['Price2'],
'Distributor' => $data[$matchme[$key]['sku']]['Price3'],
'MAP' => $data[$matchme[$key]['sku']]['Price4']
);
}
}
В приведенном выше примере $key оценивается как 0, и значение ['sku'] совпадает.
----- -------------------Отредактировано-------------------------По запросу, вот результат print_r($data), усеченный до места:

Код: Выделить всё

Array
(
[12PK-TITANIUM-CR123A] => Array
(
[LocalSKU] => 12PK-TITANIUM-CR123A
[Price] => 11.76
[Price2] => 10.32
[Price3] => 0
[Price4] => 0
)

[AA-CLAMSHELL] => Array
(
[LocalSKU] => AA-CLAMSHELL
[Price] => 0.25
[Price2] => 0
[Price3] => 0
[Price4] => 0
)

[AAA-CLAMSHELL] => Array
(
[LocalSKU] => AAA-CLAMSHELL
[Price] => 0.25
[Price2] => 0
[Price3] => 0
[Price4] => 0
)

[AE-AEL280PI] => Array
(
[LocalSKU] => AE-AEL280PI
[Price] => 0
[Price2] => 0
[Price3] => 0
[Price4] => 0
) )
По запросу, вот результат print_r($matchme), усеченный до места:

Код: Выделить всё

Array
(
[0] => Array
(
[entity_id] => 693
[sku] => 12PK-TITANIUM-CR123A
[type_id] => simple
)

[1] => Array
(
[entity_id] => 2596
[sku] => AE-AEL480HL
[type_id] => simple
)

[2] => Array
(
[entity_id] => 2597
[sku] => AE-AEL600-T6
[type_id] => simple
)

[3] => Array
(
[entity_id] => 2598
[sku] => AE-AEWL2
[type_id] => simple
) )
По запросу, вот желаемый результат $matched_luggage:

Код: Выделить всё

$matched_luggage = array(
[12PK-TITANIUM-CR123A] => array(
[sku] => 12PK-TITANIUM-CR123A,
[entity_id] => 693,
[type_id] => simple,
[Price] => 11.76,
[Price2] => 10.32,
[Price3] => 0,
[Price4] => 0
)
)
с дополнительным массивом для каждого соответствующего артикула.


Подробнее здесь: https://stackoverflow.com/questions/230 ... d-array-an
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»