gpt4 book ai didi

php - 在 PHP 中连接数组(如 MySQL 连接)

转载 作者:搜寻专家 更新时间:2023-10-31 20:38:30 24 4
gpt4 key购买 nike

我想在 PHP 中连接两个数组,就像我在 MySQL join left 中所做的一样。我有两个数组:

  • $db_products 来自数据库(它有 idsku 字段)
  • $csv_prices 来自 CSV 文件(它有 skuprice 字段)

$db_products:(它有 4000 个项目)

Array
(
[0] => Array
(
[id] => 1012
[sku] => asd123
)
[N] => Array
(
[id] => ...
[sku] => ...
)
)

$csv_prices:(它有 8000 个项目)

Array
(
[0] => Array
(
[sku] => asd123
[price] => 15.50
)
[N] => Array
(
[sku] => ...
[price] => ...
)
)

连接是 $db_products[$key][sku] = $csv_prices[$key][sku]。为了找到匹配对,我在循环中进行循环,这导致 4000 * 8000 检查匹配。它消耗了大量的精力和时间,我想提高效率。

我可以通过 unset()-ing 使用的 $csv_prices[$key] 将使用时间减少 10%,但我想提高效率。

最佳答案

如果您遍历 $csv_products 数组一次并将 SKU 设置为数组键,那么每次您有新产品时都不必按指数循环遍历该数组来找到它的匹配项.

相反,您只需遍历产品数组并使用 isset() 来查看它是否存在。

这样你只需要做 1x count($db_products) 和 1x count($csv_prices) 重复,而不是 count($db_products ) * count($csv_prices) 代表(12000 对 3200 万)。

这个概念可以被认为类似于数据库中的索引——你使用你想要查找的键作为数组键/索引,这意味着你不必每次都遍历数组来找到你想要的记录想要。

Example:

// Reindex the CSV array to use SKU as the key
$reindexed = array();
foreach ($csv_prices as $values) {
$reindexed[$values['sku']] = $values;
}
unset($csv_prices);

// Join the prices
foreach ($db_products as &$product) {
$sku = $product['sku'];
$product['price'] = isset($reindexed[$sku]) ? $reindexed[$sku]['price'] : '';
}

当然,在您开始使用大型数据集之前,您不会看到性能上的显着差异 - 随着数据集的增长,这种变化会呈指数级增长。

关于php - 在 PHP 中连接数组(如 MySQL 连接),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29617475/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com