我们有一个PHP脚本,它可以循环访问来自不同网站的许多XML/CSV文件。现在我们设法建立一个好的XML/CSV解析器脚本。PHP:循环访问数组/字符串或其他内容的最快方法
我们编写的PHP脚本循环了一些BIG XML或CSV文件。在这些XML或CVS文件中包含来自不同产品的条形码。
眼下前的脚本开始我充满了这样的产品ID +条码从MySQL的数组:
function Barcodes_Array() {
$sql = "SELECT ProductId, Barcode FROM Products WHERE (Barcode <> '') ";
$res = mysql_query($sql);
while ($rijen = mysql_fetch_assoc($res)) {
$GLOBALS['arrBarcodes'][] = $rijen;
}
}
通过XML(或CSV)我们每次循环文件,我们必须检查条码存在于数组中并返回产品ID。
对于在功能搜索:
$ =产品编号SearchBarcodeProduct($ EanNr, '条形码');
然而功能:
function SearchBarcodeProduct($elem, $field)
{
$top = sizeof($GLOBALS['arrBarcodes']) - 1;
$bottom = 0;
$ProductId = 0;
while($bottom <= $top)
{
if($GLOBALS['arrBarcodes'][$bottom][$field] == $elem) {
return $GLOBALS['arrBarcodes'][$bottom]['ProductId'];
}
else {
if (is_array($GLOBALS['arrBarcodes'][$bottom][$field])) {
if (in_multiarray($elem, ($GLOBALS['arrBarcodes'][$bottom][$field]))) {
return $GLOBALS['arrBarcodes'][$bottom]['ProductId'];
}
}
}
$bottom++;
}
return $ProductId;
}
填写数组中,因为它永远每次把我们要求MySQL的产品表。
我现在的问题是:
它仍然需要很长的时间,每次通过条形码的阵列循环。对于其他任何解决方案,有没有更快的方法,也许是一种数组的另一种方式? 有人可以帮助请我像这个愚蠢的东西几周工作!
其不好的做法使用'$ GLOBALS'这样 – 2016-05-16 22:34:02
你有没有考虑建立你要查找多个条形码的列表,然后在列表中达到一定规模查询所有的人都在一次?这将避免每次执行新查询的开销,但您仍然可以从MySQL索引中受益。 – Chris
您可能会想要查看在最初加载时对查找数组进行排序,然后如何对其执行对数搜索。 (实际上,只需在查询中添加ORDER BY barcode即可完成排序部分。) – Uueerdo