PHP数组_diff的问题
我们向WordPress上传了很多照片。不过,我们并不完全使用它们。未使用的内容仍然“附加”在它不在的帖子上,这使得返回并删除它变得很困难 我已经构建了2个阵列。一个数组包含帖子内容中的所有图像(PHP数组_diff的问题,php,arrays,wordpress,Php,Arrays,Wordpress,我们向WordPress上传了很多照片。不过,我们并不完全使用它们。未使用的内容仍然“附加”在它不在的帖子上,这使得返回并删除它变得很困难 我已经构建了2个阵列。一个数组包含帖子内容中的所有图像($postmages)。另一个数组包含WordPress数据库已附加到帖子的所有图像($mediaImages) 我试图确定哪些图像出现在数据库中,而不是在帖子中。这样我就可以从数据库中分离图像 我使用array\u diff来比较这两个数组,但是它没有显示出奇怪的人。它似乎正在显示匹配项 以下是我的阵
$postmages
)。另一个数组包含WordPress数据库已附加到帖子的所有图像($mediaImages
)
我试图确定哪些图像出现在数据库中,而不是在帖子中。这样我就可以从数据库中分离图像
我使用array\u diff
来比较这两个数组,但是它没有显示出奇怪的人。它似乎正在显示匹配项
以下是我的阵列:
把这个叫做$postmages
:
var_dump($postImages)代码>
和$mediaImages
:
var_dump($mediamages)代码>
以下是输出:
$matches = array_diff($postImages, $mediaImages);
print_r($matches);
Array
(
[2] => http://mywebsite.com/wp-content/uploads/2013/11/photoblog1.jpg
[0] => http://mywebsite.com/wp-content/uploads/2013/11/photoblog2.jpg
[1] => http://mywebsite.com/wp-content/uploads/2013/11/photoblog3.jpg
)
预期产出:
Array
(
[0] => http://mywebsite.com/wp-content/uploads/2013/12/IMG_0069.jpg
)
正如Marc B在评论中指出的那样,$mediaImages
是字符串数组,而$postimages
只是字符串数组
您可以使用自定义回调创建$mediaImages
数组:
$mediaImages = array_map(function($item) {
return $item[0];
}, $mediaImages);
另外,请注意,您有向后的参数。正确的顺序是:
array_diff($arrayToCompareFrom , $arrayToCompareAgainst);
因此,要将$postImages
与$mediamages
进行比较,您需要:
$matches = array_diff($mediaImages, $postImages);
print_r($matches);
$mediamages
是字符串数组,而$postmages
只是字符串数组。您不能区分具有固有不同结构的数组并期望得到有效的结果。很好。我错过了,一定是盯着看太久了。有没有办法将$mediaImages
压缩成与$postImages
相同的格式?在mediaImages上使用数组映射/foreach并构建与$postImages相同的结构。演示帮助我将其可视化。很好。@Pat:很高兴能帮上忙!:)
array_diff($arrayToCompareFrom , $arrayToCompareAgainst);
$matches = array_diff($mediaImages, $postImages);
print_r($matches);