【问题标题】:Last character of php string in phpphp中php字符串的最后一个字符
【发布时间】:2012-11-03 19:43:29
【问题描述】:

在 C 语言中,字符串的最后一个字符总是 '\0' PHP 也一样吗?如果不是,那么 PHP 中字符串的最后一个字符是什么?

【问题讨论】:

  • 没什么。 PHP 不需要字符串的终止字符。它在内部处理这些事情。
  • 那么如果我想从第一个字符到字符串的最后一个字符运行一个循环,我该如何在 php 中做到这一点??
  • 你需要 /0 做什么?如果你只是想检查长度或以某种方式操作字符串,有很多功能,请参阅php.net/manual/en/ref.strings.php
  • for ($i=1; $i<strlen($mystring); $i++) echo $mystring[$i];
  • 使用fgetcsv()解析csv文件。

标签: php


【解决方案1】:

要遍历字符串中的字符,请编写:

for (i = 0; i < strlen($string); i++) {
    $char = substr($string, $i, 1);
    // Do stuff with $char
}

【讨论】:

  • 您也可以使用方括号访问字符串的字符$string[$i]
  • 事实上,字符串解引用也快得多。
【解决方案2】:
for( $i = 0, $len = strlen( $string ); $i < $len; $i++ )
{
    $char = $string[ $i ];
    // do something with $char
}

... 是一种方法。

另一种方法是简单地使用 PHP 函数 str_split()(它创建字符串的单个字符的数组(除非您将第二个参数 $split_length 传递给它,其长度与默认值不同)):

foreach( str_split( $string ) as $char )
{
    // do something with $char
}

...等等

编辑:

作为您问题的 cmets 的附录;使用fgetcsv()解析csv文件。

【讨论】:

  • 这个foreach的评论也很有用
【解决方案3】:

PHP 中的字符串是二进制安全的,这意味着它们也可以包含\0。因此,没有可以使用的终止字符。

相反,字符串的长度单独存储在 PHP 的 internal variable representation 中。这也使得字符串长度计算更快。

我有一个 csv 文件,其中包含一些数据库数据。现在我必须将每一行数据转换为 sql 格式。 csv 文件中的数据如下:"abc,abc,1243,abc" 我必须让它们像这样"'abc','abc',123,'abc'"。

首先,您应该为此使用fgetcsv();它将整行(或某些情况下的行)变成一个数组。

我猜你想将这些值存储到数据库中;你可以用这个:

if ($arr = fgetcsv($f)) {
    $stmt = $db->prepare('INSERT INTO tablename VALUES (?, ?, ?, ?)');
    $stmt->execute($arr);
}

这假设您的 CSV 中的每一行都有四个项目;为了使其更通用,您可以使用 $arr 的长度来构造要在查询中添加的占位符的数量。

【讨论】:

  • @AngshuGuha 如果它解决了你的问题,那为什么要接受另一个答案呢? ;-)
  • @AngshuGuha 通常这就是你会使用upvote的;解决问题的答案通常是被接受的答案。
【解决方案4】:

我认为它应该工作

  $lastChar = substr($string, -1);

【讨论】:

  • 问题更多的是关于字符串终止字符,而不是找到实际的最后一个字符。即使是这样,我也不会反转(复制)字符串,当一个简单的字符串长度函数可以做到时。
猜你喜欢
  • 1970-01-01
  • 2018-12-03
  • 1970-01-01
  • 2014-05-13
  • 2011-02-10
  • 1970-01-01
  • 1970-01-01
  • 2012-05-31
  • 1970-01-01
相关资源
最近更新 更多