カテゴリー
SugiBlog Webデザイナー・プログラマーのためのお役立ちTips

配列の共通項を計算する – array_intersect [PHP]

複数の配列から共通するキーや値を検索する関数をご紹介。

配列の共通項を計算する – array_intersect

書式

array array_intersect ( array $array1 , array $array2 [, array $ ... ] )

配列の共通する値のキーと値が配列で返されます。
キーと値の関係は、もとの配列の組み合わせが維持されます。

パラメータ

array1 //値を調べるもとの配列
array2 //値を比較する対象とする配列
array  //さらに比較するそれ以外の配列

返り値
array1 の値のうち、 すべての引数に存在する値のものを含む連想配列を返します。

例)

<?php
$array1 = array("a" => "green", "red", "blue");
$array2 = array("b" => "green", "yellow", "red");
$result = array_intersect($array1, $array2);
print_r($result);
?>

出力結果

Array
(
    [a] => green
    [0] => red
)

キーを基準にして配列の共通項を計算する – array_intersect_key
続きを読む…»

2,050 views

かなり便利 – PHPで祝日を求める

かなり便利なので、以前から使わせていただいています。
isHoliday($year, $month, $day)だけで祝日かどうかがわかります。
他にもgetWeeksOfMonthという関数で、ある月の第n曜日の日付の取得もできます。

PHPで祝日を求める – ぱぷぅ家のホームページ
http://www.pahoo.org/e-soul/webtech/php02/php02-27-01.shtm

2016.07.05
2016年より施行された「山の日」にも対応されています。

六曜を取得する – 2018.01.18追記

先ほどとはまた別で公開されているプログラムを使って六曜も取得できます。

PHPで3ヶ月カレンダーを作る – ぱぷぅ家のホームページ
https://www.pahoo.org/e-soul/webtech/php02/php02-45-01.shtm

ダウンロードした中の「pahooCalendar.php」を読み込み、
以下のようなコードで六曜が取得できます。

// 六曜取得の設定
$pCalendar = new pahooCalendar();
$pCalendar->setLanguage('jp');
$pCalendar->makeLunarCalendar($year);

// 旧暦の取得
list($qmonth, $qday, $qq) = $pCalendar->Gregorian2Lunar($year, $month, $day);

$rokuyo = $pCalendar->rokuyou($qmonth, $qday);

echo $rokuyo;

通常は上記の方法で取得できるのですが、2018年の1~16日が
取得できなかったので、少し手を加えました。

取得できなかったのは旧暦が負の日付になることが原因でした。
例えば「1/1」だと「12/-15」となる。
「12/-15」とは、12月の0日(ゼロ日)よりも15日前ということになるよう。
つまり、12月1日よりも15日+1日前の日付を出せば良い、ということになります。
それを踏まえたのが以下のコードになります。

list($qmonth, $qday, $qq) = $pCalendar->Gregorian2Lunar($year, $month, $day);

if($qmonth > 0 && $qday > 0) {

    $rokuyo = $pCalendar->rokuyou($qmonth, $qday);

    echo $rokuyo;

} else {

    // 旧暦の日付が負だった場合の処理

    // まず1日の日付オブジェクトを作成
    $qdate = new DateTime("$year-$qmonth-01");

    // 負の日数+1日の分だけ日付を遡る
    $qdate->sub(new DateInterval("P".abs($qday - 1)."D"));

    // 遡った日付で六曜を取得
    $rokuyo = $pCalendar->rokuyou($qdate->format("n"), $qdate->format("j"));

    echo $rokuyo;

}
7,957 views

年齢を自動的に表示する – PHP

プログラムで常に現在の年齢を表示するには

<?php
    print "age:".floor((date("Ymd") - "19940619") / 10000);
?>

結果

age:18
1,993 views

画像を挿入した時のタグをカスタマイズ – WORDPRESS

挿入した画像のリンクにLightbox等の属性を追加したいとき、
その都度、手作業で挿入されたタグを編集してもいいですが
自動でできれば、それに越したことはないですよね?

そんなとき、フィルターフックに自作関数をフックして挿入されるタグをカスタマイズします。
※挿入されるときに適用されるので、それまでの投稿には反映されません。

Lightboxで必要なrel属性を追加します。以下のコードをfunctions.phpに追加。

function my_image_tag( $html, $id ) {
    $html = preg_replace('/a href=/', 'a rel="lightbox['.$id.']" href=', $html); 
    return $html;
}
add_filter( 'image_send_to_editor', 'my_image_tag', 10, 2 );

続きを読む…»

5,907 views

WORDPRESSの子テーマを作成する

WORDPRESSでは、既存のテーマを元に子テーマを作成することができます。
最低限必要なのは、テーマの基本となるスタイルシートファイル(style.css)のみです。
あとは、スクリーンショットがあれば尚可。

まず、themesディレクトリに子テーマ用のディレクトリを作成します。
ここでは親テーマの名前を「parent」、子テーマの名前を「child」とします。

wp-content/themes/child

style.cssを作成します。

/*
    Theme Name: child
    Template: parent
*/

@charset "utf-8";
@import url("../parent/style.css");

@import url();にて親テーマのCSSファイルを相対パスを指定して読み込みます。
そして、このファイルにスタイルを記述していけば親テーマのスタイルよりもこちらが優先されます。
続きを読む…»

2,021 views