1

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

4

4 回答 4

3

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

相反,字符串的长度单独存储在 PHP 的内部变量表示中。这也使字符串长度计算更快。

我有一个 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来构造要在查询中添加的占位符的数量。

于 2012-11-15T08:23:12.827 回答
1

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

for (i = 0; i < strlen($string); i++) {
    $char = substr($string, $i, 1);
    // Do stuff with $char
}
于 2012-11-15T08:15:34.393 回答
1

我认为它应该工作

  $lastChar = substr($string, -1);
于 2017-03-31T13:45:33.697 回答
0
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
}

... ETC。

编辑:

作为您对问题的评论的附录;用于fgetcsv()解析 csv 文件。

于 2012-11-15T08:16:56.847 回答