【问题标题】:how to compare arrays and return difference php如何比较数组并返回差异php
【发布时间】:2016-04-01 10:33:19
【问题描述】:

我在 server1 中检索 phpmyadmin 中的所有数据库并将其命名为 $array1。我还检索了 server2 中 phpmyadmin 中的所有数据库,并将其称为 $array2。

现在我想比较两个数组并返回差异,但我得到一个错误“数组到字符串转换”这是我的代码:

$db = new MysqliDb ('');
$db->setHost('server1');
$array1=$db->rawQuery('SHOW DATABASES');

$db = new MysqliDb ('');
$db->setHost('server2');
$array2=$db->rawQuery('SHOW DATABASES');

$result = array_diff($array1, $array2);

echo'<pre>';    
print_r($result);
echo'</pre>';

【问题讨论】:

  • 你从哪里得到这个错误?
  • 请提供var_dump($array1)的示例输出。
  • 很可能是因为$array1 和/或$array2 是多维的。 array_diff 仅适用于一维数组,将数组中所有与字符串进行比较的值转换。请参阅array_diff 手册页上的notes
  • 这就是我的数组的样子,并在我执行 array_diff Array ( [0] => Array ( [Database] => test ) [1] => Array ( [Database] => test1 ) ) var 转储看起来像这样 array(2) { [0]=> array(1) { ["Database"]=> string(4) "test" } [1]=> array(1) { ["数据库"]=> 字符串(5) "test2" }
  • 这就是我的数组的样子,并在我执行 array_diff Array ( [0] => Array ( [Database] => test ) [1] => Array ( [Database] => test1 ) ) var 转储看起来像这样 array(2) { [0]=> array(1) { ["Database"]=> string(4) "test" } [1]=> array(1) { ["数据库"]=> 字符串(5) "test2" }

标签: php mysql arrays mysqli


【解决方案1】:

一个选项是使用array_udiff()http://php.net/manual/en/function.array-udiff.php。并创建数组所需的函数。 (如果没有关于数组的任何信息,帮不了你)

【讨论】:

  • 这就是我的数组的样子,并在我执行 array_diff Array ( [0] => Array ( [Database] => test ) [1] => Array ( [Database] => test1 ) ) var 转储看起来像这样 array(2) { [0]=> array(1) { ["Database"]=> string(4) "test" } [1]=> array(1) { ["数据库"]=> 字符串(5) "test2" }
【解决方案2】:

我有一个解决方案.. array_diff 只适用于普通数组,所以我分解了我的嵌套数组,然后使用了 array_diff 并且它有效

【讨论】:

    【解决方案3】:

    在 php 中尝试 in_array() 函数 参考:http://php.net/manual/en/function.in-array.php

    【讨论】:

    • in_array 如何比较两个数组?该函数仅用于检查给定值是否在数组中可用。
    • 是的,该函数仅用于检查数组中的给定值
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-03
    • 1970-01-01
    • 1970-01-01
    • 2019-08-22
    • 2014-02-26
    • 1970-01-01
    相关资源
    最近更新 更多