Значения обновления массива циклов PHP из другого массива

У меня есть массив, созданный из .CSV

function readCSV($csvFile){
$file_handle = fopen($csvFile, 'r');
while (!feof($file_handle) ) {
$line_of_text[] = fgetcsv($file_handle, 1024);
}
fclose($file_handle);
return $line_of_text;
}

// Set path to CSV file
$csvFile = 'lmco_inventory.csv';
$csv = readCSV($csvFile);

Первый столбец — SKU, а второй — Inventory_Level. Я хочу перебрать другой массив и обновить Inventory_Level на основе Inventory_Level из массива .CSV. Уникальным значением между двумя массивами является поле SKU.

Вот мой другой массив:

for($i = 1 ; $i <= 9 ; $i++){
$filter = array('page' => $i, 'limit' => 250);
$products = Bigcommerce::getProducts($filter);
foreach ($products as $product) {
echo "$product->id\n";
}
}

Вместо эха «$ product-> id \ n»; Я хочу выровнять оба массива, где SKU = SKU, а затем обновить Inventory_Level из .CSV в массив $ products.

Надеюсь, что это имеет смысл.

РЕДАКТИРОВАТЬ

Sample .CSV data

SKU | Inventory
1     5
2     1
3     7
4     21
5     500

In plain english this is what I want:
foreach ($products as $product) {
//find where $product->sku = $csv->sku
//then $product->inventory_level gets the value of $csv->inventory_value
//loop through all objects in $product array until complete
//done

2

Решение

Предполагая, что массивы правильно структурированы, вы можете сделать следующее. Обратите внимание на & в объявлении foreach это гарантирует, что $product является ссылкой на фактическое значение в $products массив вместо копии.

foreach ($products as &$product) {
foreach ($csv as $row) {
if ($product->sku == $row['sku']) {
$product->inventory_level = $csv['inventory_value'];
}
}
}

Обратите внимание, что я не использовал BigCommerce, поэтому я не уверен в структуре возвращаемых данных, но это должно дать вам общее представление.

1

Другие решения

Других решений пока нет …