Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP-从具有给定参数的数组中删除项_Php_Arrays - Fatal编程技术网

PHP-从具有给定参数的数组中删除项

PHP-从具有给定参数的数组中删除项,php,arrays,Php,Arrays,我四处搜索,发现了一些类似的问题,但没有一个真正对我有帮助(因为我的PHP能力还不足以解决这个问题)。我想我的问题会简单到可以回答,因为我发现类似的问题是用一两行代码解决的。好了,开始吧 我有一些代码搜索给定目录的内容,并以数组形式提供文件。此特定目录仅包含名为以下内容的.JPG图像文件: Array ( [0] => featured/Shot01.jpg [1] => featured/Shot01.jpg [2] => featured/Shot02.jpg [3] =&

我四处搜索,发现了一些类似的问题,但没有一个真正对我有帮助(因为我的PHP能力还不足以解决这个问题)。我想我的问题会简单到可以回答,因为我发现类似的问题是用一两行代码解决的。好了,开始吧

我有一些代码搜索给定目录的内容,并以数组形式提供文件。此特定目录仅包含名为以下内容的.JPG图像文件:

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
)
Array
(
[0] => featured/Shot01.jpg
[2] => featured/Shot02.jpg
[4] => featured/Shot03.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;
我目前只有3张图片(带缩略图),但我会有更多,所以我还想限制数组的结果为随机3个结果。但是,如果这要求太高的话,我相信我可以自己解决这个问题

因此没有混淆,我想完全从数组中删除包含“_tn”的项,因此我的数组将如下所示:

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
)
Array
(
[0] => featured/Shot01.jpg
[2] => featured/Shot02.jpg
[4] => featured/Shot03.jpg
)
感谢所有能帮忙的人

只需使用
stripos()
函数检查文件名是否包含
\u tn
字符串。如果不是,则添加到数组。

尝试strps()以了解文件名是否包含字符串“\u 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); 
使用这个

我不明白问题出在哪里?是否需要在数组中添加“\u tn”?只需检查“\u tn”是否存在,不要将此元素添加到结果数组。


<?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);
?>

看看PHP的
array\u filter()
函数。它的设计正是为了满足您的需求:@Prix非常糟糕的主意。最好不要添加重复项。谢谢!工作得很好!我知道每个人都说要使用strpos(),但我更喜欢你的方法。最少的实际编码,这给了我确切的我想要的!我不能投赞成票,否则我会的!再次感谢!