Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Подсчет, через точку

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
RickMan
Отправлено: 03 Июня, 2012 - 22:26:06
Post Id


Участник


Покинул форум
Сообщений всего: 1033
Дата рег-ции: Май 2012  


Помог: 30 раз(а)




Здрасти, у меня такой вопрос...скажем так, у меня в БД, в ячейке, хранится к примеру "1.1.1"...
1) задача, понять сколько элементов..в данном случае 3...три единицы, разделенные точками...
2) а если дан пример "1.2.1" то понять что единицы две, а двойка 1...если есть какие-то определенные функции то подскажите...) я после паскаля, могу это сделать но функциями написанными ручками...но в пхп, я понял что многое делают встроенные функции)

Заранее благодарю...
 
 Top
Medallion
Отправлено: 03 Июня, 2012 - 22:55:27
Post Id



Частый гость


Покинул форум
Сообщений всего: 253
Дата рег-ции: Май 2012  
Откуда: Херсон, Украина


Помог: 7 раз(а)




Если в строке присутствуют одни точки и цифры, то возможно стандартными функциями обработать, а если и другие символы, регулярным выражением.
Пример не дам, копаться долго. А в регулярках я еще нуб.
 
 Top
RickMan
Отправлено: 03 Июня, 2012 - 22:56:35
Post Id


Участник


Покинул форум
Сообщений всего: 1033
Дата рег-ции: Май 2012  


Помог: 30 раз(а)




Medallion пишет:
Если в строке присутствуют одни точки и цифры, то возможно стандартными функциями обработать, а если и другие символы, регулярным выражением.
Пример не дам, копаться долго. А в регулярках я еще нуб.


да, идут строго число и точка....не что либо другое....)
число однозначное и двузначное....строго положительное, целое...

(Отредактировано автором: 03 Июня, 2012 - 22:57:20)

 
 Top
Alho
Отправлено: 03 Июня, 2012 - 23:41:59
Post Id



Посетитель


Покинул форум
Сообщений всего: 322
Дата рег-ции: Апр. 2012  


Помог: 11 раз(а)




(Отредактировано автором: 03 Июня, 2012 - 23:42:54)

 
 Top
RickMan
Отправлено: 04 Июня, 2012 - 00:04:18
Post Id


Участник


Покинул форум
Сообщений всего: 1033
Дата рег-ции: Май 2012  


Помог: 30 раз(а)






понятно...даже примерно выставил цепочку действий....а вот еще 1 1 функция не помешала бы...
к примеру у нас строка "1.2.1.3.1.4"

и в ответ я должен получить 1,2,3,4...тобиш без повторений...это реально?

(Отредактировано автором: 04 Июня, 2012 - 00:04:42)

 
 Top
Alho
Отправлено: 04 Июня, 2012 - 00:22:46
Post Id



Посетитель


Покинул форум
Сообщений всего: 322
Дата рег-ции: Апр. 2012  


Помог: 11 раз(а)




К примеру
http://www.php.su/ array_unique" target="_blank"> array_unique


ЗЫ никому конечно не сложно отвечать, но все это гуглится на раз два

(Отредактировано автором: 04 Июня, 2012 - 00:24:19)

 
 Top
RickMan
Отправлено: 04 Июня, 2012 - 00:36:27
Post Id


Участник


Покинул форум
Сообщений всего: 1033
Дата рег-ции: Май 2012  


Помог: 30 раз(а)




Alho пишет:
К примеру
http://www.php.su/ array_unique" target="_blank"> array_unique


ЗЫ никому конечно не сложно отвечать, но все это гуглится на раз два


огромное спасибо)) три функции, а такое сбацать смогу))
(Добавление)
еще 1 вопрос...если у меня есть массив:
"1,2,3,1,2,3"

и чтобы считало сколько там единиц к примеру...чтобы выдало 2....
 
 Top
etoYA
Отправлено: 04 Июня, 2012 - 01:29:27
Post Id



Участник


Покинул форум
Сообщений всего: 1859
Дата рег-ции: Июль 2011  
Откуда: Крым


Помог: 21 раз(а)




PHP:
скопировать код в буфер обмена
  1. <?
  2. function cnt($array, $num){
  3.         $i = 0;
  4.         foreach ($array as $v){
  5.                 if ($v == $num) $i++;
  6.         }
  7.         return $i;
  8. }
  9. $array = array(0,1,2,3,4,5,6,6,7,1,2,1,3,1,1);
  10. echo cnt($array, 1);
  11. ?>
 
 Top
Okula
Отправлено: 04 Июня, 2012 - 01:34:05
Post Id



Участник


Покинул форум
Сообщений всего: 1389
Дата рег-ции: Окт. 2010  


Помог: 42 раз(а)




Есть функция array_count_values() но она подсчитает количество всех значений в массиве.
Я бы обернул её в такую пользовательскую функцию:
PHP:
скопировать код в буфер обмена
  1. /**
  2.  * $input array входящий массив
  3.  * $val mixed значение в массиве, количество которого необходимо подсчитать
  4.  * return int количество повторений значения $val в массиве $input
  5.  */
  6. function count_value(array $input, $val) {
  7.     if(in_array($val, $input) == FALSE) return 0;
  8.     $arr_col = array_count_values($input);
  9.     return $arr_col[$val];
  10. }

(Отредактировано автором: 04 Июня, 2012 - 01:36:55)

 
 Top
etoYA
Отправлено: 04 Июня, 2012 - 01:37:44
Post Id



Участник


Покинул форум
Сообщений всего: 1859
Дата рег-ции: Июль 2011  
Откуда: Крым


Помог: 21 раз(а)




Okula, да). Чето я забыл про array_count_values..
Okula пишет:
array_count_value

values жеУлыбка
 
 Top
Okula
Отправлено: 04 Июня, 2012 - 01:39:09
Post Id



Участник


Покинул форум
Сообщений всего: 1389
Дата рег-ции: Окт. 2010  


Помог: 42 раз(а)




etoYA, да я уже исправил Улыбка Недописал буковку одну, забыл Улыбка
 
 Top
RickMan
Отправлено: 04 Июня, 2012 - 01:40:45
Post Id


Участник


Покинул форум
Сообщений всего: 1033
Дата рег-ции: Май 2012  


Помог: 30 раз(а)




Okula пишет:
Есть функция array_count_values() но она подсчитает количество всех значений в массиве.
Я бы обернул её в такую пользовательскую функцию:
PHP:
скопировать код в буфер обмена
  1. /**
  2.  * $input array входящий массив
  3.  * $val mixed значение в массиве, количество которого необходимо подсчитать
  4.  * return int количество повторений значения $val в массиве $input
  5.  */
  6. function count_value(array $input, $val) {
  7.     if(in_array($val, $input) == FALSE) return 0;
  8.     $arr_col = array_count_values($input);
  9.     return $arr_col[$val];
  10. }


спасибо, я уже первый вариант вклинил в код и работает отлично...я прочто думал будет что-то по проще...встроенная функция..)
 
 Top
Okula
Отправлено: 04 Июня, 2012 - 01:45:49
Post Id



Участник


Покинул форум
Сообщений всего: 1389
Дата рег-ции: Окт. 2010  


Помог: 42 раз(а)




Можно ещё обработать возникновение ошибки E_WARNING в функции array_count_values() - защита от кривых рук Улыбка
PHP:
скопировать код в буфер обмена
  1. /**
  2.  * $input array входящий массив
  3.  * $val mixed значение в массиве, количество которого необходимо подсчитать
  4.  * return int количество повторений значения $val в массиве $input
  5.  */
  6. function count_value(array $input, $val) {
  7.     if(is_string($val) == TRUE || is_int($val) == TRUE) {
  8.         if(in_array($val, $input) == FALSE) return 0;
  9.         $arr_col = array_count_values($input);
  10.         return $arr_col[$val];
  11.     } else return 0;
  12. }

(Добавление)
RickMan пишет:
я прочто думал будет что-то по проще...встроенная функция..)

Не для всех задач можно обойтись встроенными функциями.
 
 Top
RickMan
Отправлено: 04 Июня, 2012 - 14:53:13
Post Id


Участник


Покинул форум
Сообщений всего: 1033
Дата рег-ции: Май 2012  


Помог: 30 раз(а)




еще такой вопрос...к примеру у меня есть массив

Array
(
[0] => 1
[1] => 1
[2] => 2
)

после функции array_unique у меня осталось такое вот:

Array
(
[0] => 1
[2] => 2
)

она выполняет то что мне надо, но при этом интексы остаются те же...и чтобы обратиться к ней, как ок второй я не могу использовать логику n-1....можно как-то индексы в очередность сделать ну или как мне после 0 ячейки найти следующую..тобиш вторую?

В принципе я такую вот функцию написал...
PHP:
скопировать код в буфер обмена
  1.         function FN($array, $num){
  2.                         $i=$num+1;
  3.                         while (empty($array[$i])){
  4.                                         $i++;
  5.                         }
  6.                         return $i;
  7.         }


Она возвращает индекс следующей ячейки..

(Отредактировано автором: 04 Июня, 2012 - 15:04:13)

 
 Top
ams
Отправлено: 04 Июня, 2012 - 16:38:39
Post Id



Посетитель


Покинул форум
Сообщений всего: 351
Дата рег-ции: Нояб. 2010  


Помог: 13 раз(а)




PHP:
скопировать код в буфер обмена
  1.  
  2.  function FN($array, $num){
  3.  
  4. $array = array_merge($array); // сделает нормальные ключи ...
  5. // и потом можно for
  6.  
  7.                         $i=$num+1;
  8.  
  9.                         while (empty($array[$i])){
  10.  
  11.                                         $i++;
  12.  
  13.                         }
  14.  
  15.                         return $i;
  16.  
  17.         }
  18.  
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB