4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

変更された項目の差分を知るための PHP の array_diff_assoc の応用小ネタ

Posted at

概要

ユーザがあるフォームからユーザ情報を変更したとする。
「どの項目が変更されたのだろう?」 というのを簡単に知る方法はないかというところで array_diff_assoc を使った小ネタです。

例えばユーザ情報の所属が 開発部 から プロダクト部 に変更されたとすると、
所属の項目が変わったのだな、と知ることができる。

コード


$before = ['ユーザ名' => 'yamotuki', '会社名' => 'M&Aクラウド', '所属' => '開発部'];
$after = ['ユーザ名' => 'yamotuki', '会社名' => 'M&Aクラウド', '所属' => 'プロダクト部'];

$changedBeforeList = array_diff_assoc($after, $before);
$changedAfterList = array_diff_assoc($before, $after);
$beforeAndAfterDiff = [];
foreach ($changedBeforeList as $key => $value) {
    $beforeAndAfterDiff[$key] = $changedBeforeList[$key] . ' => ' . $changedAfterList[$key];
}
        
var_dump($beforeAndAfterDiff);

出力

array(1) {
  ["所属"]=>
  string(31) "プロダクト部 => 開発部"
}

補足

公式ドキュメントによると、

array_diff_assoc — 追加された添字の確認を含めて配列の差を計算する

assoc は wikipedia によれば associative の略です。

連想配列 連想配列(れんそうはいれつ、英語: associative array)

4
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?