我有一个从.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。我想循环遍历另一个数组并根据.CSV数组中的Inventory_Level更新Inventory_Level。两个数组之间的唯一值是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";
}
}
而不是echo“$ product-&gt; 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
答案 0 :(得分:1)
假设阵列结构正确,您可以执行以下操作。请注意foreach声明中的&
,这可确保$product
是对$products
数组中实际值的引用,而不是副本。
foreach ($products as &$product) {
foreach ($csv as $row) {
if ($product->sku == $row['sku']) {
$product->inventory_level = $csv['inventory_value'];
}
}
}
请注意我没有使用过BigCommerce,所以我不确定其返回数据的结构,但这应该给你一个大概的想法。