#php
Вопрос:
Хорошо, предположим, у меня есть строка следующего вида: $string = «0::15:6:0»;
Теперь я хочу посчитать количество чисел выше 0 в строке, поэтому я substr_count($string, ':') 1)
получаю число 5 (что технически правильно, так как, хотя фактических чисел 4, пробел в моем коде используется как 0). Но это включает в себя 0 и пустые 0…чего я не хочу.
Есть какие-либо предложения о том, как создать «умный подсчет подстрок», чтобы отобразить мне число 2 (поскольку есть два числа, не пустые или 0, 15 и 6)?
Комментарии:
1. Вы могли бы попробовать использовать регулярное выражение для сопоставления чисел, превышающих 0. Может быть, что-то вроде
/[1-9]d*/
2. 1.
explode
путем:
2. Выполните итерацию по массиву из #1 и сравните 3. ????????? 4. ПРИБЫЛЬ! (это точный алгоритм, который вы применяете, делая это вручную, не уверен, почему вы хотите что-то более сложное, когда разрабатываете)3. Кроме того, я думаю, вы неправильно понимаете, что делает substr_count. На самом деле это подсчет количества раз, когда в строке появляется»:».
Ответ №1:
Потрясающе в крошечной упаковке:
$count = count(array_filter(explode(":",$string)));
Это работает, потому что строка "0"
является ложной.