如何使这些数组与array_diff函数兼容?

时间:2019-01-03 13:02:55

标签: php arrays multidimensional-array

我正在尝试通过以下操作找到这两个数组之间的差异:

 $linkedAritclesToBeRemoved = array_diff($oldLinkedArticleIds, $linkedArticlesIds);
$linkedArticlesToBeAdded = array_diff($linkedArticlesIds, $oldLinkedArticleIds);

上面的代码引发警告。注意:数组到字符串的转换,这是因为我的一个数组是单个数组,另一个数组是多维数组。因此,我想删除此警告消息,并且希望数组与array_diff函数兼容!我该怎么做?

  

注意:我知道这是一个通知,但是我想删除它。

新数组(linkedArticlesIds):

array(5) {
  [0]=>
  string(1) "6"
  [1]=>
  string(1) "2"
  [2]=>
  string(1) "1"
  [3]=>
  string(1) "7"
  [4]=>
  string(1) "8"
}

旧数组($ oldLinkedArticleIds):

array(3) {
  [0]=>
  array(6) {
    ["id"]=>
    int(30)
    ["article_id"]=>
    int(1)
    ["linked_article_id"]=>
    int(6)
    ["order_by"]=>
    NULL
    ["created_at"]=>
    string(19) "2019-01-03 00:00:00"
    ["updated_at"]=>
    string(19) "2019-01-03 00:00:00"
  }
  [1]=>
  array(6) {
    ["id"]=>
    int(31)
    ["article_id"]=>
    int(1)
    ["linked_article_id"]=>
    int(2)
    ["order_by"]=>
    NULL
    ["created_at"]=>
    string(19) "2019-01-03 00:00:00"
    ["updated_at"]=>
    string(19) "2019-01-03 00:00:00"
  }
  [2]=>
  array(6) {
    ["id"]=>
    int(32)
    ["article_id"]=>
    int(1)
    ["linked_article_id"]=>
    int(1)
    ["order_by"]=>
    NULL
    ["created_at"]=>
    string(19) "2019-01-03 00:00:00"
    ["updated_at"]=>
    string(19) "2019-01-03 00:00:00"
  }
}

1 个答案:

答案 0 :(得分:1)

如果您只需要比较$oldLinkedArticleIds数组中的商品ID,则需要提取ID列。您可以使用array_column() ...

轻松完成此操作
$oldIds = array_column($oldLinkedArticleIds, "id");

并在比较中使用此新列表...

$linkedAritclesToBeRemoved = array_diff($oldIds, $linkedArticlesIds);
$linkedArticlesToBeAdded = array_diff($linkedArticlesIds, $oldIds);