【问题标题】:Array to string conversion error line 11数组到字符串转换错误第 11 行
【发布时间】:2014-11-14 07:56:44
【问题描述】:

我在第 11 行得到错误数组到字符串的转换错误 我需要将 $result 数组与 $file 数组进行比较,然后用 $result 数据覆盖 FILE。换句话说,FILE 和它所包含的数据不断地用 $result 更新

比较 -> 覆盖 -> 在下次执行时重复。

注意:.db 文件在第一次循环时为空,但在第一次写入时填充。

数组到字符串转换错误的示例代码:

<?php
$id = $argv[1];  //variable for inbound
$result = array(
    'return' => array(
        array(1,2,3),
        array(6,2,3),
        array(3,2,3),
    )
);
function getdiff($new, $old) {
   $diff = array_intersect($new, $old);
   return $diff;
}
$old = file_exists('1.db') ? json_decode(file_get_contents('1.db'), 1) : array();
$arrayDiffresult = getdiff( $result, $old);
file_put_contents('1.db', json_encode($result));
print_r(
    getdiff($result, $old)
);
?>

我尝试了第二种方法,但在比较点第 9 行出现同样的错误。

$result = array(
    'return' => array(
        array(1,2,3),
        array(5,2,3),
        array(3,2,3),
    )
);
$lines = file("myDB.db");
$arrayDiffresult = array_diff ( $result['return'], $lines);
file_put_contents('myDB.db', print_r($result['return'], true));

【问题讨论】:

  • 第 11 行出现错误...错误是什么? O.o
  • 当问“为什么 ______ 不起作用?”形式的问题时,我建议删除任何使示例复杂化的内容。在这种情况下,这就是文件系统操作。它们使其他人难以模拟您的问题,并且(此处)可能使您更难调试实际上是滥用 array_intersect() 的内容。
  • @k.tarkin 你的是迄今为止最好的答案。至少您提供了代码,我可以将其放入编译器并查看它是否有效。我现在正在我的代码上对其进行测试。

标签: php arrays


【解决方案1】:

我相信 array_intersect 仅用于一维数组,它试图将嵌套数组视为字符串进行相等比较。但是查看文档会显示函数array_uintersect,您可以在其中编写自己的比较函数作为回调。你没有提供太多关于要求的信息,但如果你提供了,我很乐意提供帮助

【讨论】:

  • Mauricio Trajano 我非常清楚地说明了要求比较 -> 覆盖 -> 在下次执行时重复。警告:array_uintersect():至少需要 3 个参数,2 个在
  • 右边第三个参数是比较数组的函数
  • 你没有在你的问题中说明它们是如何比较的
  • 一模一样的帖子,一模一样的array_diff。 array_diff 如果我能找出数据类型问题,上述逻辑将解决问题。但我不能,所以我正在寻找一种解决方法或新方法来做与帖子中完全相同的事情。所有逻辑的差异为零。
猜你喜欢
  • 2015-02-26
  • 2012-07-15
  • 2014-03-29
  • 2017-12-02
  • 2013-06-23
  • 2013-08-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多