- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想将 $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);
因此,我们假设您在代码中执行了以下操作:
<?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/
我想将 $image = $row['colum1 '] 与 $file = readdir($dh) 进行比较,但它似乎不适用于 $compare = array_diff_assoc($image
我得到以下行的数组到字符串转换错误: $diff = array_diff_assoc($stockist, $arr); 这里,$arr 是一个从 JSON 文件解码的数组。使用 is_array(
我得到以下行的数组到字符串转换错误: $diff = array_diff_assoc($stockist, $arr); 这里,$arr 是一个从 JSON 文件解码的数组。使用 is_array(
我是一名优秀的程序员,十分优秀!