我们将很多照片上传到WordPress。我们不会全部使用它们。未使用的那些保持“附加”到它不在其中的帖子,这使得很难返回并删除它。
我已经构建了2个数组。一个数组包含帖子内容($postImages
)中的所有图像。另一个数组包含WordPress数据库附加到帖子($mediaImages
)的所有图像。
我正在尝试识别哪些图像出现在数据库中,但不在帖子中。这样我就可以从数据库中分离图像了。
我正在使用array_diff
来比较两个数组,但它并没有显示奇怪的人。它似乎显示了比赛。
这是我的阵列:
调用此$postImages
:
var_dump($postImages);
array(3) {
[2]=>
string(64) "http://mywebsite.com/wp-content/uploads/2013/11/photoblog1.jpg"
[0]=>
string(64) "http://mywebsite.com/wp-content/uploads/2013/11/photoblog2.jpg"
[1]=>
string(64) "http://mywebsite.com/wp-content/uploads/2013/11/photoblog3.jpg"
}
$mediaImages
:
var_dump($mediaImages);
array(4) {
[1]=>
array(1) {
[0]=>
string(64) "http://mywebsite.com/wp-content/uploads/2013/11/photoblog1.jpg"
}
[2]=>
array(1) {
[0]=>
string(64) "http://mywebsite.com/wp-content/uploads/2013/11/photoblog2.jpg"
}
[0]=>
array(1) {
[0]=>
string(64) "http://mywebsite.com/wp-content/uploads/2013/11/photoblog3.jpg"
}
[3]=>
array(1) {
[0]=>
string(62) "http://mywebsite.com/wp-content/uploads/2013/12/IMG_0069.jpg"
}
}
这是输出:
$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
)
答案 0 :(得分:1)
正如Marc B在评论中指出的那样,$mediaImages
是一个字符串数组数组,而$postimages
只是一个字符串数组。
您可以将array_map()
与自定义回调一起使用来创建$mediaImages
数组:
$mediaImages = array_map(function($item) {
return $item[0];
}, $mediaImages);
另请注意,您有array_diff()
的参数向后。正确的顺序是:
array_diff($arrayToCompareFrom , $arrayToCompareAgainst);
因此,要将$postImages
与$mediaImages
进行比较,您需要:
$matches = array_diff($mediaImages, $postImages);
print_r($matches);