我正在尝试查找包含特定子字符串的数组的所有行。
我有一个包含我所有产品编号或 SKU 的数组。
我有另一个数组,其中包含在目录及其许多子目录中找到的图像路径。
(这个图像路径数组使用遍历目录并将所有文件路径添加到该数组的 RecursiveIterator 填充)
每个图像名称都包含其中的 SKU,因此 sku# 123 可能具有以下图像:
123.jpg
123_1.jpg
123_2.jpg
等等等等。
我想输出与特定 sku 关联的所有图像。这是我开始的代码。出于某种原因,我只得到了最后一个 sku 的预期结果。
$dir = "./images"; // directory with images
$skus = file("./source.csv"); // source file with all skus
$all_images = array(); // array to hold all image paths found in folder
// recursively search through directory save all file paths to array
foreach (new RecursiveIteratorIterator(new RecursiveDirectoryIterator($dir)) as $f) {
$all_images[] = $f;
}
// loop through each sku and find its image paths
for($i=0; $i < count($skus); $i++){
$values = preg_grep("/$skus[$i]/", $all_images);
echo "----sku: $skus[$i] -----<br /><br />";
foreach($values as $val)
echo "Values: $val<br />";
}
我的结果页面如下所示:
----sku: TR450 -----
----sku: TR451 -----
----sku: TR452 -----
----sku: TR453 -----
----sku: TR454 -----
----sku: TR455 -----
----sku: TR456 -----
Values: ./images\brand\make\TR456 - abacus\TR457.jpg
Values: ./images\brand\make\TR457 - abacus\TR457_Diagram.jpg
Values: ./images\brand\make\TR458 - abacus\Thumbs.db
我不确定为什么这仅适用于最后一个 SKU?
谢谢你。