我得到以下代码行的数组到字符串的转换错误:
$diff = array_diff($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>";
}
发布于 2013-11-07 08:09:37
根据它:
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]);
检查更深层次的维度
发布于 2015-08-14 12:39:24
是的,严格的答案是因为“你的一个数组是多维的”。
另一个有用的注意事项可能是-根据您进一步解析实际差异的需要-考虑首先使用以下命令测试您的阵列:
$diff = strcmp(json_encode($stockist), json_encode($arr));
或
$diff = strspn(json_encode($stockist) ^ json_encode($arr), "\0");
或
$diff = xdiff_string_diff(json_encode($stockist), json_encode($arr));
所有这些选项都将比较整个数组树,而不仅仅是顶层。
发布于 2015-12-16 14:58:50
由于array_diff
只能处理一个维度,因此您可以:
- [flattening a multidimensional array](https://stackoverflow.com/q/1319903/55075), e.g.:
while ( $arr ) { list($key,$value) = each( $arr );is_array( $value )?$arr=$value:$out$key = $value;} //现在$out是$arr的扁平版。
- serializing the array,例如:
$results = array_diff(array_map('serialize',$a2),array_map('serialize',$a1));
https://stackoverflow.com/questions/19830585
复制相似问题