【发布时间】:2013-11-18 18:46:31
【问题描述】:
以下行出现数组到字符串转换错误:
$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>";
}
【问题讨论】:
-
可能原因:多维数组
-
“两个参数都是数组” 当然是,php 说的没什么不同。问题是数组到字符串的转换,而不是相反。问题是这些数组包含。
-
@viakondratiuk 是的,它是多维的。但不是 array_diff() 只评估第一级
-
@user2963765 此函数仅检查 n 维数组的一维。当然你可以使用
array_diff($array1[0], $array2[0]);来检查更深的维度。 -
您可以使用
recursive array_diff。看看这个gist.github.com/jondlm/7709e54f84a3f1e1b67b,它解决了我的问题......
标签: php arrays multidimensional-array array-difference