简单的for循环php中未初始化的字符串偏移错误

时间:2013-10-10 20:49:51

标签: php

我的目标是将字符串中的每个空格“”转换为“%”。

这是我的功能:

<?php
$nazov = "dasa sdas da sd";
$buttonNazov = "";

for($i=0;$i<=strlen($nazov);$i++) {
  if($nazov[$i] === " ") {
     $buttonNazov .= "%"; // Line# 6
  } else {
    $buttonNazov .= $nazov[$i]; // Line#12
  }
}

echo $buttonNazov;
?>

我收到输出但也有2个错误:

( ! ) Notice: Uninitialized string offset: 15 in C:\wamp\www\test.php on line 6
( ! ) Notice: Uninitialized string offset: 15 in C:\wamp\www\test.php on line 12

dasa%sdas%da%sd

2 个答案:

答案 0 :(得分:0)

字符串$ nazov的最后一个索引是$ nazov [strlen($ nazov)-1],所以使用&lt;而不是在循环条件中的&lt; =

for($i=0;$i<strlen($nazov);$i++)

答案 1 :(得分:0)

来自马克贝克的评论:Offset begins at 0, not at 1; so $i<strlen($nazov) and not $i<=strlen($nazov)

下面是更好的写同样的方式

<?php
$nazov = "dasa sdas da sd";
$buttonNazov = "";
$len = strlen($nazov);

for($i=0; $i<$len; $i++) {
  if("" === $nazov[$i]) {
     $buttonNazov .= "%"; 
  } else {
    $buttonNazov .= $nazov[$i]; 
  }
}
echo $buttonNazov;
?>

如果您想用%

替换空格,请选择其他方法
$buttonNazov = str_replace(' ', '%', $nazov);