#include <stdio.h>
int main(int argc, char *argv[])
{
char *str;
str = argv[1];
while (*str != '\\0') {
printf("%c\\n", *str);
str++;
}
return 0;
}C言語で書くと以上のような処理をPHPで書きたいとき。
<?php
$str = $argv[1];
for ($i = 0; isset($str[$i]); $i++) {
echo $str[$i]."\\n";
}こういうときはissetが速い。こんな処理が必要になることは滅多にないのですが、、文字列中に半角の文字が何文字あるか数えたい時とか正規表現だと遅い時とかに使えるかと。
phpspotで前の記事を紹介していただいた中で、全角で関数名や変数が書ける、という面白い構文が紹介されていたので自分も使ったことのある変なのを書いてみました。
あと、issetは複数の引数を取れる、というTIPSは最近面白いこちらのブログに。
あと,is_string() とか is_int() ってアンダーバーで区切られているのに,
なぜか isset() は is_set() ではないんですよね.
ちなみにこれは歴史的経緯だったような。今のCODING_STANDARDSだとis_*が命名規則に則っていますがissetとかsetcookieはその規則を適用する前だったとか。PHP-usersのMLで見た記憶があるのですがうろ覚え&検索してもここまでしかわからず。
5 Comments
なるほど,isset() は歴史的経緯でしたか.
情報ありがとうございます.
is_set() っていうエイリアスがあればいいんですけどねぇ.
コメントありがとうございます!
確かにエイリアスがあってもいいですね。PHPで自分で定義する程ではありませんが。
重箱ですが,多分
$len = strlen( $str);
for ($i = 0; $i
文字列内の文字に [ ] でアクセスするための方法は下位互換目的で、 { } でのアクセスを推奨するとかドキュメントにありましたよ。
http://php.s3.to/man/language.types.string.html より引用:
波括弧の後に任意の文字をゼロから始まるオフセットで指定することに より、文字列内の文字にアクセス/修正することが可能です。
注意: 過去の互換性のため、配列括弧を使用することが可能です。しかし、 この構文はPHP 4に依存しています。
>アクセスするための方法
アクセスする方法orz