PHP関数の引数が覚えられない
PHP関数の引数の順番が覚えられなくてそのたびググっている。特に引っかかるやつを挙げていく。
集合から1つの要素を探すような関数
in_array(mixed $needle, array $haystack, bool $strict = false): bool
needle(要素)が先でhaystack(集合)が次
array_key_exists(string|int $key, array $array): bool
key(要素)が先、array(集合)が次
array_search(mixed $needle, array $haystack, bool $strict = false): int|string|false
needle(要素)が先でhaystack(集合)が次
strpos(string $haystack, string $needle, int $offset = 0): int|false
haystack(集合)が先、needle(要素)が次
strstr(string $haystack, string $needle, bool $before_needle = false): string|false
haystack(集合)が先、needle(要素)が次
str_contains(string $haystack, string $needle): bool
haystack(集合)、needle(要素)
preg_match(
string $pattern,
string $subject,
array &$matches = null,
int $flags = 0,
int $offset = 0
): int|false
pattern(要素)が先、subject(集合)が次
まとめると、配列と正規表現の関数は要素が1番目で集合が2番目なのに対して、文字列関数は集合が先になる。
集合の一部を別の要素に置換する関数
array_splice(
array &$array,
int $offset,
?int $length = null,
mixed $replacement = []
): array
array(集合)、offset・length(置換対象)、replacement(置換後の要素)
substr_replace(
array|string $string,
array|string $replace,
array|int $offset,
array|int|null $length = null
): string|array
string(集合)、replace(置換後の要素)、offset・length(置換対象)
str_replace(
array|string $search,
array|string $replace,
string|array $subject,
int &$count = null
): string|array
search(置換対象)、replace(置換後の要素)、subject(集合)
strtr(string $string, string $from, string $to): string
strtr(string $string, array $replace_pairs): string
string(集合)、from(置換対象)、to(置換後の要素)
string(集合)、replace_pairs(置換対象=>置換後の要素のペア)
preg_replace(
string|array $pattern,
string|array $replacement,
string|array $subject,
int $limit = -1,
int &$count = null
): string|array|null
pattern(置換対象)、replacement(置換後の要素)、subject(集合)
まとめると、
文字列関数は集合が先な事が多いが、str_replaceだけは違ってpreg_replaceと同じ順番。
正規表現(preg_replace)はとにかくpattern(対象)が一番目。
array_splice は array_slice に合わせたのかも。
集合から一部を抜き出す関数
array_slice(
array $array,
int $offset,
?int $length = null,
bool $preserve_keys = false
): array
array(集合)、offset・length(対象)
substr(string $string, int $offset, ?int $length = null): string
string(集合)、offset・length(対象)
array_sliceとsubstrは同じ。
全体のまとめ
関数名 | 分類 | 引数1 | 引数2 | 引数3 | 引数4 |
---|---|---|---|---|---|
in_array | 配列 | needle | haystack | ||
array_key_exists | 配列 | key | array | ||
array_search | 配列 | needle | haystack | ||
strpos | 文字列 | haystack | needle | ||
strstr | 文字列 | haystack | needle | ||
str_contains | 文字列 | haystack | needle | ||
preg_match | 正規表現 | pattern | subject | matches | |
array_splice | 配列 | array | offset | length | replacement |
substr_replace | 文字列 | string | replace | offset | length |
str_replace | 文字列 | search | replace | subject | |
strtr | 文字列 | string | from | to | |
preg_replace | 正規表現 | pattern | replacement | subject | |
array_slice | 配列 | array | offset | length | |
substr | 文字列 | string | offset | length |
集合、 探す要素 or 置換・検索対象
いくつか法則が見える
- 正規表現関数(preg_*) は pattern が引数の1番目になる
- 文字列関数は、集合となる文字列が1番目な事が多い。(例外: str_replace)
- 置換する関数は、置換対象が前で置換後の要素がその次なことが多い。(例外: substr_replace)
- 配列から要素を探す関数は、要素が前で集合が次
str_replace は preg_replace と同じ順番にしたのだろう。
substr_replace は substr と近いが replacement が最後でなく2番目なのは、 replacement は省略不可だが length が省略可能だからだろうか。
これで少しは整理できただろうか。またすぐ忘れそうだなあ