PHP 分割后计算字符串数量

11

以下是我的代码

<?php

$string = 'a|b|c|d|e|f';

$tags = explode('|' , $string);


foreach($tags as $i =>$key) {
$i >0;
    echo $i.' '.$key .'</br>';

}

?>

输出结果为

0 a
1 b
2 c
3 d
4 e
5 f

我想尝试计算在使用 | 进行分割后有多少个字符串(对于我的示例应该是 6),并且我需要 $i 从 1 开始而不是从 0 开始。

请问有什么建议吗?

谢谢。


3
你通常会怎样count()一个数组中的项目? - PeeHaa
5个回答

22
<?php

$string = 'a|b|c|d|e|f';

$tags = explode('|' , $string);


foreach($tags as $i =>$key) {

    echo $i.' '.$key .'</br>';

}

?>

尝试使用:

echo count($tags); // Output of 6

数组的下标从0开始,而不是1。因此,如果使用除count以外的任何方法,您将始终比预期少1个(除非在计算之前修改数组)。


如果您创建一个简单的数组:$Var = array("First","second"); 然后发出 print_r($Var); 命令,您会注意到键始终从0开始。这是每个创建的数组的主索引。因此,您得到了您所得到的输出。在循环之前但在创建数组之后,您需要重新索引您的数组以获得如下的键:array(1,2,3,4,5,6); - Daryl Gill
重新索引数组?为什么不直接加1呢? - PeeHaa
@PeeHaa 我在考虑数组展示方面 - Daryl Gill

9
如果你只需要总数,你可以这样做:
$tags = explode('|' , $string);
$num_tags = count($tags);

3
<?php

$string = 'a|b|c|d|e|f';

$tags = explode('|' , $string);

$count =count($tags);
  echo 'Count is: '.$count .'</br>';
$i = 1 ;
foreach($tags as $key) {

    echo $i.' '.$key .'</br>';
$i++;
}

?>

1
<?php

$string = 'a|b|c|d|e|f';
$array= explode('|' , $string);
 for($i = 0;$i<count($array);$i++){
  echo $i. $array[$i]."\n";
}

?>

2
虽然这段代码可能回答了问题,但是提供关于为什么和/或如何回答问题的额外上下文可以提高其长期价值。 - RyanNerd

0

程序员总是从0开始计数,这是一个好的习惯,但如果你真的需要从1开始计数,只需在foreach循环之前声明$i变量为1即可。


程序员总是从0开始计数,这实际上取决于编程语言。 - PeeHaa

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接