подсчет строк в foreach

  • Автор темы artlos
  • 49
  • Обновлено
  • 12, May 2024
  • #1
Привет, У меня есть строка, которая делит ее на части запятой. Каждый кусок делим на меньший интервал с. Вам нужно посчитать, сколько частей с интервалом содержится в каждой части с запятой ниже.
 
$string = "1str 1str, 2str 2str, 3str 3str";
$keywords = explode(',', $string);
foreach ($keywords as $v) {

$parts = explode(' ', $v);

echo count($parts) . "<br>";
}
Код (разметка): выводит 2 3 3, а не ожидаемое 2 2 2. В чем проблема? Почему счет не работает должным образом? Спасибо!

artlos


Рег
27 Jan, 2014

Тем
1

Постов
3

Баллов
13
  • 18, May 2024
  • #2
Используйте это для подсчета всех,
 $string = "1str 1str, 2str 2str, 3str 3str";
$keywords = explode(',', $string);
foreach ($keywords as $v) {
$parts = explode(' ', $v);
$count+=count($parts);
}
echo $count;
PHP:
 

so_solaire


Рег
01 Jan, 2011

Тем
0

Постов
2

Баллов
2
  • 21, May 2024
  • #3
Это будет работать:
 
<?php
$string = "1str 1str, 2str 2str, 3str 3str";
$keywords = explode(',', $string);
foreach ($keywords as $v) {

$parts = explode(' ', ltrim($v));

echo count($parts) . "<br>";
}

?>
Код (разметка): без изменения исходника
 

traff.co


Рег
17 Apr, 2013

Тем
0

Постов
1

Баллов
1
  • 02, Jun 2024
  • #4
Не беспокоясь о дополнительных пробелах/переменных:
 
foreach (explode(',', "1str 1str , 2str 2str , 3str 3str ") as $v) {

echo str_word_count($v);
}
PHP:
 

pakunok


Рег
01 Jan, 2011

Тем
1

Постов
3

Баллов
13
  • 06, Jun 2024
  • #5
Так может быть, стоит сделать еще один шаг вперед?
 $string = "1str 1str , 2str 2str , 3str 3str ";
$keywords = explode(',', $string);
foreach ($keywords as $v) {

$parts = explode(' ', rtrim(ltrim($v)));

echo count($parts) . "<br>";
}
PHP:
 

rif009


Рег
16 Dec, 2012

Тем
1

Постов
3

Баллов
13
  • 08, Jun 2024
  • #6
Проблема в том, что вы второй раз говорите ему разделить там, где есть место. И у вас есть пробел до и после слов для 2-го и 3-го набора. попробуйте это и посмотрите.
 
$string = "1str 1str,2str 2str,3str 3str";
$keywords = explode(',', $string);
foreach ($keywords as $v) {

$parts = explode(' ', $v);

echo count($parts) . "<br>";

}
PHP:
 

Timy


Рег
23 Feb, 2016

Тем
0

Постов
2

Баллов
2
  • 12, Jun 2024
  • #7
Шутка, которую я придумал уже довольно давно: PHP, да... для этого есть функция. @KangBroke, я как бы смеюсь над использованием rtrim вокруг ltrim... когда есть простая обрезка, которая обрабатывает оба конца одновременно!
http://php.net/manual/en/function.trim.php
 

LionelADV


Рег
17 Feb, 2016

Тем
0

Постов
3

Баллов
3
Тем
49554
Комментарии
57426
Опыт
552966