如何从 foreach 循环中的数组中删除重复值?
How to remove duplicate values from array in foreach loop?
我想从数组中删除重复值。我知道使用 array_unique(array)
函数但在 foreach
循环中遇到问题。这不是一个重复的问题,因为我已经阅读了几个关于这个的问题,其中大多数强制使用 array_unique(array)
函数,但我不知道在 foreach
循环中使用它。这是我的 php 函数。
$images = scandir($dir);
$listImages=array();
foreach($images as $image){
$listImages=$image;
echo substr($listImages, 0, -25) ."<br>"; //remove last 25 chracters
}
如何做到这一点?
您提供的示例可以修改如下:
$images = scandir($dir);
$listImages=array();
foreach($images as $image) {
if (!in_array($image, $listImages)) {
$listImages[] = $image;
}
echo substr($image, 0, -25) ."<br>"; //remove last 25 chracters
}
现在 $listImages
将不包含重复项,并且会回显每个图像(包括重复项)。
基于@mistermartins 的回答:
$images = scandir($dir);
$listImages=array();
foreach($images as $image) {
//if already echo'd continue to next iteration
if (in_array($image, $listImages)) {
continue;
}
//else, add image to array and echo.
$listImages[] = $image;
echo substr($image, 0, -25) ."<br>"; //remove last 25 chracters
}
使用 hashmaps 应该会更快:
$images = scandir($dir);
$listImages = array();
foreach($images as $image) {
if (!isset($listImages[$image])) {
$listImages[$image] = true;
echo substr($image, 0, -25) ."<br>"; //remove last 25 chracters
}
}
我不确定我是否完全理解你的意思。随后的方法对我有用,以便使用 foreeach 循环从数组中删除重复的索引。
$list = array("hans", "peter", "hans", "lara", "peter", "lara", "lara");
sort($list);
foreach ($list as $k => $v) {
if (isset($check)) {
if ($check === $v) {
unset($list[$k]);
}
}
$check = $v;
}
$noDuplicate = array_values($list);
print_r($noDuplicate);
给出以下结果:
数组 ([0] => hans [1] => lara [2] => peter )
在 foreach 循环中从数组中删除重复值非常复杂。只需将所有元素推送到一个数组,然后删除重复项,然后根据需要获取值。尝试使用以下代码。
$listImages=array();
$images = scandir($dir);
foreach($images as $image){
$editedImage = substr($image, 0, -25);
array_push($listImages, $editedImage);
}
$filteredList = array_unique($listImages);
foreach($filteredList as $oneitem){
echo $oneitem;
}
我想从数组中删除重复值。我知道使用 array_unique(array)
函数但在 foreach
循环中遇到问题。这不是一个重复的问题,因为我已经阅读了几个关于这个的问题,其中大多数强制使用 array_unique(array)
函数,但我不知道在 foreach
循环中使用它。这是我的 php 函数。
$images = scandir($dir);
$listImages=array();
foreach($images as $image){
$listImages=$image;
echo substr($listImages, 0, -25) ."<br>"; //remove last 25 chracters
}
如何做到这一点?
您提供的示例可以修改如下:
$images = scandir($dir);
$listImages=array();
foreach($images as $image) {
if (!in_array($image, $listImages)) {
$listImages[] = $image;
}
echo substr($image, 0, -25) ."<br>"; //remove last 25 chracters
}
现在 $listImages
将不包含重复项,并且会回显每个图像(包括重复项)。
基于@mistermartins 的回答:
$images = scandir($dir);
$listImages=array();
foreach($images as $image) {
//if already echo'd continue to next iteration
if (in_array($image, $listImages)) {
continue;
}
//else, add image to array and echo.
$listImages[] = $image;
echo substr($image, 0, -25) ."<br>"; //remove last 25 chracters
}
使用 hashmaps 应该会更快:
$images = scandir($dir);
$listImages = array();
foreach($images as $image) {
if (!isset($listImages[$image])) {
$listImages[$image] = true;
echo substr($image, 0, -25) ."<br>"; //remove last 25 chracters
}
}
我不确定我是否完全理解你的意思。随后的方法对我有用,以便使用 foreeach 循环从数组中删除重复的索引。
$list = array("hans", "peter", "hans", "lara", "peter", "lara", "lara");
sort($list);
foreach ($list as $k => $v) {
if (isset($check)) {
if ($check === $v) {
unset($list[$k]);
}
}
$check = $v;
}
$noDuplicate = array_values($list);
print_r($noDuplicate);
给出以下结果:
数组 ([0] => hans [1] => lara [2] => peter )
在 foreach 循环中从数组中删除重复值非常复杂。只需将所有元素推送到一个数组,然后删除重复项,然后根据需要获取值。尝试使用以下代码。
$listImages=array();
$images = scandir($dir);
foreach($images as $image){
$editedImage = substr($image, 0, -25);
array_push($listImages, $editedImage);
}
$filteredList = array_unique($listImages);
foreach($filteredList as $oneitem){
echo $oneitem;
}