gpt4 book ai didi

php - 使用 array_diff_assoc 比较两个数组

转载 作者:行者123 更新时间:2023-11-29 15:12:51 26 4
gpt4 key购买 nike

我想将 $image = $row['colum1 ']$file = readdir($dh) 进行比较,但它似乎不适用于 $compare = array_diff_assoc($image, $uploads); 有什么想法吗?

<?php
//pulling images from mysql colum1
require 'databaseConnection.php'
$result = mysqli_query($conn, "SELECT column1 FROM table1");
while ($row = mysqli_fetch_array($result)) {
$image = $row ['colum1'] . "<br/>";
}

//pulling pictures from specific path
$dir = "application/uploads";
if(is_dir($dir)) {
if ($dh = opendir($dir)) {
while (($file = readdir($dh)) !== false) {
$uploads = $file . "<br>";
}
}
}

//attempting to compare $image to $upload
$compare = array_diff_assoc($image, $uploads);
print_r($compare);

最佳答案

我猜测您在这里真正想要的是 array_diff() 而不是 array_diff_assoc(),因为后者比较两个值(value)观,而前者只关注值(value)观。我无法想象为什么键与您的用例相关。

您犯了一些错误,因为您的 readdir() 循环只是将字符串存储在变量 $uploads 中(您正在覆盖循环每次迭代的值),并且 $images (每次迭代也会被覆盖)将存储给定行的列数组那次迭代。

可能想要做的是获取表中仅存储文件名的一列的数组,并将其与磁盘上的文件名数组进行比较。

使用arary_diff()时要记住的重要一点是顺序很重要,因为结果是第一个数组中的值列表,这些值不存在于任何其他数组中。这意味着您必须问自己,您想知道数据库中的哪些文件不在磁盘上,还是想知道磁盘上的哪些文件不在数据库中?

这是一个short gist on how to visualize the different array operations in PHP .

$array1 = [
"red",
2,
"green",
"blue",
];

$array2 = [
"orange",
"green",
"blue",
"red",
];

$diff = array_diff($array1, $array2);

var_dump($diff);

array_diff

因此,我们假设您在代码中执行了以下操作:

<?php
//pulling images from mysql colum1
require 'databaseConnection.php'
$result = mysqli_query($conn, "SELECT column1 FROM table1");

$images = []; // store a list of images from the database

while ($row = mysqli_fetch_array($result)) {
$images[] = $row['colum1'];
}

//pulling pictures from specific path
$dir = "application/uploads";

$uploads = []; // store a list of files on disk

if(is_dir($dir)) {
if ($dh = opendir($dir)) {
while (($file = readdir($dh)) !== false) {
$uploads[] = $file;
}
}
}

//attempting to compare $image to $upload
$compare = array_diff($images, $uploads);
print_r($compare);

如果$images$uploads的结果如下:

$images  = ["a.jpg", "b.jpg", "c.jpg"];
$uploads = ["a.jpg", "b.jpg"];

那么 $compare 的结果应该是 ["c.jpg"] 因为它是 $images 中存在的唯一值,即不存在于 $uploads 中。

关于php - 使用 array_diff_assoc 比较两个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59934362/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com