【问题标题】:PHP Compare Two Arrays?PHP比较两个数组?
【发布时间】:2010-03-16 16:55:04
【问题描述】:

我正在尝试比较数据库中的两个条目,因此当用户进行更改时,我可以获取两个数据库条目并比较它们以查看用户更改的内容,因此我会得到类似于以下内容的输出:

用户将 $fieldName$originalValue 更改为 $newValue

我对此进行了调查并遇到了array_diff,但它没有提供我需要的输出格式。

在我继续编写一个执行此操作的函数并将其作为一个不错的 $mtextFormatDifferenceString 返回之前,谁能指出我已经这样做的解决方案的方向?

我不想重新发明轮子..

【问题讨论】:

  • 与其在PHP中进行比较,不如在SQL中进行比较?

标签: php arrays compare


【解决方案1】:

由于您需要“从 $originalValue 到 $newValue”,我将继续选择两行,将它们放入 assoc 数组中,然后遍历键,保存不相等的键。有点像:

$fields = array_keys($row1);
$changedFields = array();

foreach ($fields as $field) {
    if ($row1[$field] != $row2[$field]) {
        $changedFields[] = $field;
    }
}

我知道您在询问是否存在预制轮子,但我觉得解决方案非常简单。

?>

【讨论】:

  • 你知道当你看不到树木的时候......我拿了你的代码并在它的基础上构建了我想要的输出。谢谢!
  • 我太了解了 :) 很高兴我能帮上忙。
【解决方案2】:

虽然你没有定义你需要什么格式,但著名的diff 算法可能适合你。谷歌PHP diff algorithm,我相信你会找到一些建议。

【讨论】:

    【解决方案3】:

    您可以使用 array_diff_assoc 获取更改后的值 ($newValue),然后只需使用键 ($fieldName) 找到原始值 $originalValue 并以您想要的任何格式输出

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-03
      • 1970-01-01
      • 2012-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-04
      相关资源
      最近更新 更多