我一直在搜索,我发现了一些类似的问题,但没有一个真正帮助我(因为我的PHP能力还不足以弄明白)。我认为我的问题很简单,因为我发现的类似问题是用一两行代码解决的。所以,这里去了!
我有一些代码可以搜索给定目录的内容,并提供数组中的文件。此特定目录只有名称如下的.JPG图像文件:
Shot01.jpg Shot01_tn.jpg
等等等等。我的数组以一种方式给我文件名,我可以直接在标签中使用结果显示在我正在构建的网站上。但是,我有点麻烦,因为我想限制我的数组不返回项目,如果它们包含“_tn”,所以我可以使用链接到完整大小图像的缩略图。我曾经考虑过没有缩略图和调整图像大小以使PHP更容易让我做,但这感觉就像放弃了我。那么,有谁知道我怎么做到这一点?这是我目前的代码:$path = 'featured/';
$newest = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path, RecursiveDirectoryIterator::SKIP_DOTS));
$array = iterator_to_array($newest);
foreach($array as $fileObject):
$filelist = str_replace("_tn", "", $fileObject->getPathname());
echo $filelist . "<br>";
endforeach;
我试图使用str_replace(),但我现在意识到我完全错了。这将返回我的数组:
Array
(
[0] => featured/Shot01.jpg
[1] => featured/Shot01.jpg
[2] => featured/Shot02.jpg
[3] => featured/Shot02.jpg
[4] => featured/Shot03.jpg
[5] => featured/Shot03.jpg
)
我目前只有3张图片(有缩略图),但我会有更多,所以我也想要将数组的结果限制为随机的3个结果。但是,如果这个问题太多了,我可以自己想出那部分我相信。
所以没有混淆,如果它们包含“_tn”,我想从数组中完全删除它们,所以我的数组看起来像这样:
Array
(
[0] => featured/Shot01.jpg
[2] => featured/Shot02.jpg
[4] => featured/Shot03.jpg
)
感谢任何可以提供帮助的人!
答案 0 :(得分:1)
只需使用stripos()
函数检查文件名是否包含_tn
字符串。如果没有,请添加到数组。
答案 1 :(得分:1)
<?php
function filtertn($var)
{
return(!strpos($var,'_tn'));
}
$array = Array(
[0] => featured/Shot01.jpg
[1] => featured/Shot01_tn.jpg
[2] => featured/Shot02.jpg
[3] => featured/Shot02_tn.jpg
[4] => featured/Shot03.jpg
[5] => featured/Shot03_tn.jpg
);
$filesarray=array_filter($array, "filtertn");
print_r($filesarray);
?>
答案 2 :(得分:0)
尝试使用strpos()来知道文件名是否包含字符串“_tn”,如果没有,则将文件名添加到数组
$path = 'featured/';
$newest = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path, RecursiveDirectoryIterator::SKIP_DOTS));
$array = iterator_to_array($newest);
$filesarray = array();
foreach($array as $fileObject):
// Check - string contains "_tn" substring or not
if(!strpos($fileObject->getPathname(), "_tn")){
// Check - value already exists in array or not
if(!in_array($fileObject->getPathname(), $filesarray)){
$filesarray[] = $fileObject->getPathname();
}
}
endforeach;
print_r($filesarray);
答案 3 :(得分:0)
Use this
<?php
$array = Array(
[0] => featured/Shot01.jpg
[1] => featured/Shot01_tn.jpg
[2] => featured/Shot02.jpg
[3] => featured/Shot02_tn.jpg
[4] => featured/Shot03.jpg
[5] => featured/Shot03_tn.jpg
)
foreach($array as $k=>$filename):
if(strpos($filename,"_tn")){
unset($array[$k]);
}
endforeach;
Prnt_r($array);
//OutPut will be you new array removed all name related _tn files
$array = Array(
[0] => featured/Shot01.jpg
[2] => featured/Shot02.jpg
[4] => featured/Shot03.jpg
)
?>
答案 4 :(得分:0)
我无法理解这是什么问题?是否需要在数组中添加“_tn”?只需检查“_tn”是否存在,不要将此元素添加到结果数组中。