使用多维数组调用 array_diff_assoc() 时出现“数组到字符串转换错误”

新手上路,请多包涵

我得到以下行的数组到字符串转换错误:

 $diff = array_diff_assoc($stockist, $arr);

这里, $arr 是从 JSON 文件解码的数组。使用 is_array() 函数,我能够验证这两个参数都是数组。有人可以指出我的问题吗

$stockist = array();
while (!feof($file_handle)) {

    $line_of_text = fgetcsv($file_handle);
    $query = "SELECT * FROM reorderchart WHERE medicine = '"
        . trim($line_of_text[3])
        . "' ORDER BY medicine";
    $result = mysql_query($query);

    if (trim($line_of_text[2]) - trim($line_of_text[1]) <= 0) {

        while ($row = mysql_fetch_array($result)) {

            $file = "results.json";
            $arr = json_decode(file_get_contents($file),true);
            $pharmacy = trim($row['Medicine']);

            if (isset($stockist[$pharmacy])) {

                $medicine = $stockist[$pharmacy];
                $medicine[] = trim($row['Stockist']);
                $stockist[$pharmacy] = $medicine;

            } else {

                $medicine = array();
                $medicine[] = trim($row['Stockist']);
                $stockist[$pharmacy] = $medicine;
            }
        }
    }
}
$diff = array();
$diff = array_diff_assoc($stockist,$arr);
ksort($diff);
foreach ($diff as $key => $value) {

    echo "<table align='center' border='1'>";
    echo "<tr><td align = 'center'> <font color = 'blue'> $key</td></tr>";

    foreach($value as $key1 => $value1) {

        echo "<tr><td align ='center'>$value1</td></tr><br>";
    }
    echo "</table>";
}

原文由 user2963765 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 832
1 个回答

根据它:

 php -r 'array_diff(array("a" => array("b" => 4)), array(1));'
PHP Notice:  Array to string conversion in Command line code on line 1
PHP Stack trace:
PHP   1. {main}() Command line code:0
PHP   2. array_diff() Command line code:1

您的一个数组是多维的。

array_diff 只检查n维数组的一维。当然,您可以使用 array_diff($array1[0], $array2[0]); 检查更深的维度

原文由 Viacheslav Kondratiuk 发布,翻译遵循 CC BY-SA 3.0 许可协议

推荐问题