PHPにてNotice:Undefined offsetエラー時の対応
- 2015年11月30日
- VBA_PHP
PHPにて”Notice: Undefined offset”エラーが発生した場合の対応方法ですが、配列で定義の無い要素を指定した場合などです。
私の場合は、
1 2 3 4 5 6 7 8 |
function makeRandStr($length) { $str = array_merge(range('a', 'z'), range('0', '9'), range('A', 'Z')); $r_str = null; for ($i = 0; $i < $length; $i++) { $r_str .= $str[rand(0, count($str))]; } return $r_str; } |
と使っていました。rand(0, count($str))で、count($str)が要素数を返すのですが、配列は0から始まるのでカウントで10個要素があった場合も、配列の指定hは0~9までとなるので”Notice: Undefined offset”エラーが発生していました。
以下のように、最初にカウントから-1を引いて最大数値にするとエラーがなくなりました。
1 2 3 4 5 6 7 8 9 |
function makeRandStr($length) { $str = array_merge(range('a', 'z'), range('0', '9'), range('A', 'Z')); $r_str = null; $max_count = count($str) -1; // 要素の数は、配列の数字より一つ小さいので-1 for ($i = 0; $i < $length; $i++) { $r_str .= $str[rand(0, $max_count)]; } return $r_str; } |
rand(0, $max_count)として、$max_count = count($str) -1;で予め-1することでエラーが発生しなくなりました。
コメントを残す