PHP数组_diff的问题

PHP数组_diff的问题,php,arrays,wordpress,Php,Arrays,Wordpress,我们向WordPress上传了很多照片。不过,我们并不完全使用它们。未使用的内容仍然“附加”在它不在的帖子上,这使得返回并删除它变得很困难 我已经构建了2个阵列。一个数组包含帖子内容中的所有图像($postmages)。另一个数组包含WordPress数据库已附加到帖子的所有图像($mediaImages) 我试图确定哪些图像出现在数据库中,而不是在帖子中。这样我就可以从数据库中分离图像 我使用array\u diff来比较这两个数组,但是它没有显示出奇怪的人。它似乎正在显示匹配项 以下是我的阵

我们向WordPress上传了很多照片。不过,我们并不完全使用它们。未使用的内容仍然“附加”在它不在的帖子上,这使得返回并删除它变得很困难

我已经构建了2个阵列。一个数组包含帖子内容中的所有图像(
$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);