0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

PHP関数の引数が覚えられない

Last updated at Posted at 2023-01-17

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 配列 :round_pushpin:needle :earth_asia:haystack
array_key_exists 配列 :round_pushpin:key :earth_asia:array
array_search 配列 :round_pushpin:needle :earth_asia:haystack
strpos 文字列 :earth_asia:haystack :round_pushpin:needle
strstr 文字列 :earth_asia:haystack :round_pushpin:needle
str_contains 文字列 :earth_asia:haystack :round_pushpin:needle
preg_match 正規表現 :round_pushpin:pattern :earth_asia:subject matches
array_splice 配列 :earth_asia:array :round_pushpin:offset :round_pushpin:length replacement
substr_replace 文字列 :earth_asia:string replace :round_pushpin:offset :round_pushpin:length
str_replace 文字列 :round_pushpin:search replace :earth_asia:subject
strtr 文字列 :earth_asia:string :round_pushpin:from to
preg_replace 正規表現 :round_pushpin:pattern replacement :earth_asia:subject
array_slice 配列 :earth_asia:array :round_pushpin:offset :round_pushpin:length
substr 文字列 :earth_asia:string :round_pushpin:offset :round_pushpin:length

:earth_asia: 集合、:round_pushpin: 探す要素 or 置換・検索対象

いくつか法則が見える

  • 正規表現関数(preg_*) は pattern が引数の1番目になる
  • 文字列関数は、集合となる文字列が1番目な事が多い。(例外: str_replace)
  • 置換する関数は、置換対象が前で置換後の要素がその次なことが多い。(例外: substr_replace)
  • 配列から要素を探す関数は、要素が前で集合が次

str_replace は preg_replace と同じ順番にしたのだろう。
substr_replace は substr と近いが replacement が最後でなく2番目なのは、 replacement は省略不可だが length が省略可能だからだろうか。

これで少しは整理できただろうか。またすぐ忘れそうだなあ

参考

0
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?