zoukankan      html  css  js  c++  java
  • PHP 字符串索引问题

    • php 通过下标获取的是字节,而不是字符!!!!$str{$i} 获取的是第$i个字节, 而不是第$i 个字符!!!哦 No,准确说是第$i+1个字节,因为下标是从0开始的,并且应该使用 []代替{},这样在以后的PHP版本更安全。
    • PHP可以通过
      $str{0} 或者 $str[0]  的形式获取字符串的第一个字节的内容。

      今天写了一段程序,出现了问题

      $contentLength = mb_strlen($assessment['content']);  //计算字符串的长度,以‘字符’计算
              $content = '';
              for($i = 0; $i <= $contentLength; $i++){
                  $content .= $assessment['content']{$i};  //开始我本以为通过字符串下标获取的是指定字符,结果出现了乱码,经查阅发现,字符串下标获取的是指定的字节,而不是字符。所以出现了乱码。
                  if($i % 10 == 0) {
                      $content .= "
      
      ";  //每10个字换行
                      $content .= $assessment['content']{$i};  //str_split
                  }
              }
              echo 'content:',$content;

      所以以后要特别注意了,之前还真没注意过这个问题,靠 >^_^<

    • 那么如果我想获取第$i个字符怎么实现呢。可以这样
      $contentLength = mb_strlen($assessment['content']);
              $content = '';
              for($i = 0; $i <= $contentLength; $i++){
                  //$content .= $assessment['content']{$i};  //这种形式获取的是第$i+1个字节,下标是从0 开始的
                  $content .= mb_substr($assessment['content'], $i, 1);  //通过这种方式获取第$i+1个字符
                  if($i % 15 == 0) {
                      $content .= "
      
      ";  //每15个字换行
                      $content .= mb_substr($assessment['content'], $i, 1);  //str_split
                  }
              }
              echo 'content:',$content;
  • 相关阅读:
    剑指Offer
    剑指Offer
    剑指Offer
    选书
    马的遍历
    从事效应
    魔性的素数环1~20 自带解释~
    [POJ1236]Network of Schools(并查集+floyd,伪强连通分量)
    [HDOJ3974]Assign the task(建树胡搞)
    [HDOJ4027]Can you answer these queries?(线段树,特殊成段更新,成段查询)
  • 原文地址:https://www.cnblogs.com/bneglect/p/12085324.html
Copyright © 2011-2022 走看看