【问题标题】:Replace use of explode() with str_split()用 str_split() 替换 explode() 的使用
【发布时间】:2010-03-09 04:08:35
【问题描述】:
$transData = fgets($fp);
while (!feof ($fp))
{  
    $transArry = explode(" ", $transData);
    $first = $transArry[0];
    $last = $transArry[1];
    $Sub = $transArry[2];
    $Grade= $transArry[3]; 
    echo "<table width='400' ><colgroup span='1' width='35%' /><colgroup span='2' width='20%' /> <tr><td> ".$first."  ".$last." </td><td>   ".$Sub." </td><td> ".$Grade." </td></tr></table>";
    $transData = fgets($fp);
}

我的老师希望我将 explode() 的这种用法更改为 str_split(),同时保持相同的输出。我该怎么做?

【问题讨论】:

    标签: php arrays explode


    【解决方案1】:

    如果使用 str_spilt,则不能使用分隔符。 str_split 将字符串逐个字符拆分并存储到每个数组索引中。也使用 str_split() 我们可以指定字符串存储在数组索引中的限制。如果你只使用 split() 函数,你可以得到与explode() 一样的输出。

    使用以下行代替爆炸。

    $transArry = split(" ",$transData);
    

    【讨论】:

    • 注意:split 自 PHP 5.3 起已弃用; preg_splitexplode 是推荐的替代方案(前者用于如果您需要正则表达式,后者用于按普通字符串分割)。
    【解决方案2】:

    explode() 和str_split() 两者的区别在于explode 使用一个字符进行拆分,而str_split 需要字符数。因此,除非记录数据 $transData 中的字段长度完全相同,否则这将需要额外的代码。如果所有字段/记录的长度相同,则可以直接插入该函数。因此,如果记录中的每个字段长度为 10 个字符,您可以这样做:

    $transArry = str_split($transData, 10);
    

    【讨论】:

      猜你喜欢
      • 2019-02-12
      • 2015-09-13
      • 1970-01-01
      • 2013-10-05
      • 2013-09-18
      • 1970-01-01
      • 2012-03-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多