7
8

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 5 years have passed since last update.

$length に NULL は渡せるか?

Last updated at Posted at 2014-04-11

関数ラインナップ

array_slice

ss.png

PHP5.2.4 以降

  • $length を省略すると無限大を指定したと見なされる。
  • $lengthNULL を渡すと無限大を指定したと見なされる。

PHP5.2.3 以前

  • $length を省略すると無限大を指定したと見なされる。
  • $lengthNULL を渡すと 0 を指定したと見なされる

$preserve_keys を指定したいときの対処法

count関数を利用する
$array = array_slice($array, $offset, count($array), true);

array_splice

ss (2014-04-12 at 07.20.51).png

int $length = int は意味不明なのでたぶん ドキュメンテーションバグ です。暇な方にはPHP本家のほうにバグレポート出していただけると(ry

PHP全バージョン

  • $length を省略すると無限大を指定したと見なされる。
  • $lengthNULL を渡すと 0 を指定したと見なされる

$replacement を指定したいときの対処法

count関数を利用する
array_splice($input, $offset, count($input), $replacement);

mb_substr

ss (2014-04-12 at 06.43.08).png

PHP5.4.8 以降

  • $length を省略すると無限大を指定したと見なされる。
  • $lengthNULL を渡すと無限大を指定したと見なされる。

PHP5.4.7 以前

  • $length を省略すると無限大を指定したと見なされる。
  • $lengthNULL を渡すと 0 を指定したと見なされる

$encoding を指定したいときの対処法

mb_strlen関数を利用する
$str = mb_substr($str, $start, mb_strlen($str, 'UTF-8'), 'UTF-8');
最初にmb_internal_encoding関数を実行して引数を省略する
mb_internal_encoding('UTF-8');
$str = mb_substr($str, $start);
最初にini_set関数を実行して引数を省略する
ini_set('mbstring.internal_encoding', 'UTF-8');
$str = mb_substr($str, $start);

備考: mb_internal_encoding()とini_get()の結果が異なるのでPHPのソースを読んで理解してみた

substr

ss (2014-04-12 at 06.47.31).png

PHP全バージョン

  • $length を省略すると無限大を指定したと見なされる。
  • $lengthNULL を渡すと 0 を指定したと見なされる
7
8
0

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
7
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?