【番外編】ライトノベルで学ぶPHPプログラミング入門 【array_filterの巻】
登場人物について
コウタ:自称ごく普通の高校生。宇宙からやってきたロボット、ポコスケと同居。面倒事を嫌い平凡な生活を良しとする男。趣味はマネーゲーム。
宇喜多真琴うきた まこと:コウタの通う高校に転入してきた、自称コウタの幼馴染。AV部を設立する。いつも高飛車な態度でコウタに命令する。
8月も終わり、我がAV部の部室のエアコンの効きが悪い。まだまだ暑いのにこれでは耐えられない。
「フィルターの掃除が必要ね」
真琴がアイスを口に入れながら部の旧式のエアコンを見上げる。
「そうだな。フィルターを水でジャーっと洗えばエアコンの効きも生き返るか」
俺は脚立に上り、エアコンのフィルターを外し、両手にフィルターをもって足で部室のドアを開けた。
「というか真琴、お前もアイスばっか食ってないで手伝え」
「あ~、そうなっちゃうよね~」
真琴もやれやれといった顔で立ち上がる。
サッカー部やラグビー部が練習するグラウンド脇にある水道の蛇口にホースを付け俺と真琴はフィルターを洗う。
「コウタ」
真琴のほうを振り向いた途端俺は真琴のホースの水を真正面から食らってしまった。
「あははは、直撃~」
などと笑う真琴に腹が立ってきたので俺も負けじとホースの水をビシャアッと真琴にぶっかけてやった。
「やだぁ~、冷た~い」
俺もそうだが真琴のTシャツも水浸しだ。今気づいたが真琴はブラをしていない。どう見ても乳首が透けている。
「どうでもいいけどお前、ブラくらい付けろよ。乳首透けてるだろ」
「だって暑いんだも~ん。ていうかコウタあたしの乳首見れて得したと思ったでしょ?」
「思うわけねーだろ!」
なんてくだらないやりとりをして部室に戻るとすっかり日が暮れて夕暮れだ。
「フィルターって言えば」
真琴が急に立ち上がる。
「PHPの配列にもフィルターってかけられるって知ってる?コウタ」
「は?」
真琴はノートPCのエディタにPHPのプログラムを書き出した。
array_filter.php
<?php
$arr1 = array();
$arr1[] = 'sex';
$arr1[] = 'omanko';
$arr1[] = 'null';
$arr1[] = null;
?>
<!DOCTYPE html>
<html>
<head>
<title>FUCK</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
</head>
<body>
●配列が空のもの以外を表示表示(フィルター前)<br />
<?php
foreach($arr1 as $key=>$val){
echo '要素表示<'.$val.'>
';
}
?>
●配列が空のもの以外を表示表示(フィルター後)<br />
<?php
$arr1 = array_filter($arr1, 'strlen');
foreach($arr1 as $key=>$val){
echo '要素表示<'.$val.'>
';
}
?>
</body>
</html>
真琴が実行したフプログラムの結果はこうだ。
●配列が空のもの以外を表示表示(フィルター前)
要素表示<sex>
要素表示<omanko>
要素表示<null>
要素表示<>
●配列が空のもの以外を表示表示(フィルター後)
要素表示<sex>
要素表示<omanko>
要素表示<null>
「フィルター前に比べてフィルター後のほうが要素が減っている、ってことか?真琴」
「うん、フィルター前の配列にはnullの要素が含まれてるよね?そこでnullを取り除きたい、もっと言うと長さがある文字列だけを残したい。そういうとき、
array_filter($arr1, 'strlen');
を実行して、戻り値をもらえばいい。第一引数は処理の対象の配列、第二引数はコールバック関数、つまりこの配列に適用する関数なの。この関数を適用して戻り値がfalseにならなければ、処理後の関数に追加される。なんだかまどろっこしいけど、長さがある文字列にstrlenの関数を実行したら、長さが返るじゃない?で、nullは長さが無いから処理後の配列に入らない。だからnullははじかれる。ただし、'null'はクォートでくくってるからそういう文字列として扱われて、処理後も残るんだ」
「……しかしまあ、エアコンのフィルターを見てPHPの関数を連想するとはさすがだな、真琴。もう外は真っ暗だし、坂の下の広島焼きの店にでも行くか」
「そうね、賛成!」