pagetaka

写真、PC、ネット、岡山、旅の話題をお届けします

PHP:「配列」どうしを比較し差分を表示する

PHPのDOMを使って、サイトの更新状況を自動チェックしようと妄想しています。最近、RSSを意図的に設けてないサイトが増えているみたいで、更新状況をチェックするのはある意味、受難な時代に…爺のようなスキルのないものには特にね…グスン。

前回チェックとの差分を求める必要

サイトの更新状況チェックということは、前回と比較するという作業は避けて通ることができません。

PHPには、「配列」を使って差分を求める機能があり、これは便利!ということでちょっとメモとして残しておかなければ。

配列

爺の昔話です。ええ、1980年代の前半、PC-8001を使い始めたころのことです。ひとつの値を格納するbasic言語の「変数」に面喰ったのを覚えています。「変数」って数学の言葉というようなことしか記憶が無く、そもそも縁遠いとか好きになれないコトバでありました。その「変数」が束になったというか、複数の値を格納する「配列」などとなると、もう、お手上げ~でした。

a(0)="あ"
a(1)="い"

というようなことで、カッコの中の数字(エクセルのセルA1、の1のようなことかと。「添え字」とも)を変化させることで、格納している情報を効率よく処理できる、という…。

この「配列」がさらに多次元でつかえるとか…少し使えるようになると嬉しかったです。

PHParray_diff — 配列の差を計算する

で、時代は一気に30年以上経過し、現在へ。

PHPでDOMするにしても、今回、たとえば記事の個別URLを得たとして、これが既出かどうかというのは、結構大切な関門のような気がするです。

これ抜きにすると、目視で確認するということに…。自動の「自」は「自分」という意味ではなかったはずだが…。はて?
PHPスクリプトに、これは前回チェックしているから、今回このURLは必要なし、という機能がないと困る、というようなことであります。

PHPの配列どうしを比較するという方法を使うと、これが結構簡単にできるみたいであります。配列内の並び順も気にせず、サッとできる…。昔なら、アルゴリズムをいちいちスクリプトに書いていたな~などと、隔世の感…(単に爺が知らないだけ…)。

配列1の内容が、a,b,c,3 の4つ、配列2の内容が、a,b,c,d,0,1 の6つとした場合、配列1をキーにすると、 3 が差分になる…。配列2をキーにすると、d,0,1 が差分に(厳密には、PHPは「===」で比較するみたいですが、まあ、例えというようなことで、曖昧な部分はお目こぼしを…)。

さて、妄想は続く…。