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 :: как посчитать выводимые в key значения? прошу помощи

 PHP.SU

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


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

> Без описания
dev
Отправлено: 11 Сентября, 2014 - 18:00:36
Post Id


Новичок


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


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




Здравствуйте! Есть кусок кода

PHP:
скопировать код в буфер обмена
  1.  if (substr($key,0,4) == "AIR/" && in_array(substr($key,4,3),array("123","321","567","894","111","222","564","864")))
  2.   {
  3.    echo "\n* $key *\n";



который выводит в конце концов значения в таком виде

CODE (htmlphp):
скопировать код в буфер обмена
  1.  * AIR/564-0000906c * * AIR/321-00008cab * * AIR/222-0000806f * * AIR/111-00009067 *


скажите пожалуйста как мне считать $key перед выводом мне надо получать число сколько там значений, разделителем служит звездочка * потому что оно выводит все в одну строку и я не знаю как такое можно посчитать.
я думал может считать сколько в строке будет AIR/ встречаться такое число и выйдет, но у меня всеравно не выходит. пробовал считать через
count($key) но оно выводит 1, потому что оно наверно считает всю строку)
Помогите
 
 Top
Sail
Отправлено: 15 Сентября, 2014 - 13:15:15
Post Id



Участник


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


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




dev пишет:
разделителем служит звездочка *

Используйте
 
 Top
RickMan
Отправлено: 15 Сентября, 2014 - 13:18:04
Post Id


Участник


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


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




Слудя логике скорее всего:
 
 Top
Sail
Отправлено: 15 Сентября, 2014 - 13:31:23
Post Id



Участник


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


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




RickMan пишет:
Слудя логике скорее всего:

Угу Улыбка
А может, просто надо
PHP:
скопировать код в буфер обмена
  1. array("123","321","567","894","111","222","564","864")
вынести в переменную и использовать её
Закатив глазки
Или обернуть фрагмент кода ТС в цикл и в части использовать вместо 4 вычисляемую позицию Улыбка
В общем, просим dev уточнить.

(Отредактировано автором: 15 Сентября, 2014 - 13:33:33)

 
 Top
dev
Отправлено: 15 Сентября, 2014 - 20:16:18
Post Id


Новичок


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


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




Спасибо всем за ответы я уже потерял всю надежду так как у меня до сих пор не вышло
Sail, RickMan


выводит нули "0000" количество нулей соответствует числу нужных значений но мне бы вместо нулей получить ответ 4 а не четыре нуля=)

для наглядности скину код сначала
PHP:
скопировать код в буфер обмена
  1. if ($air_channels)
  2. {
  3.  ksort($air_channels);
  4.  foreach ($air_channels as $key => $value)
  5.  {
  6.  
  7.   if (substr($key,0,4) == "AIR/" && in_array(substr($key,4,3),array("366","367","368","369","370","371","372","373","374","375","376","377","378","379")))
  8.   {
  9.  
  10.   //тут я хотел бы узнать число которое получиться уже после обработки условием if


был бы безмерно благодарен за помощь так как уже неделю мучаюсь, пытался делать так но тоже не сработало

PHP:
скопировать код в буфер обмена
  1.   if (substr($key,0,4) == "AIR/" && in_array(substr($key,4,3),array("366","367","368","369","370","371","372","373","374","375","376","377","378","379")))
  2.   {
  3.  $n = $n + 1;
  4. echo "\n* $n *\n";


выводит

* 1 * * 2 * * 3 * * 4 * * 5 * * 6 * а нужно вывести просто 6

надеюсь вы понимаете что я хочу сделать

(Отредактировано автором: 15 Сентября, 2014 - 20:56:20)

 
 Top
Sail
Отправлено: 16 Сентября, 2014 - 08:31:42
Post Id



Участник


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


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




dev, похоже, надо получить количество выведенных элементов из массива $air_channels, у которых ключ === 'AIR/'.
Если так, то:
PHP:
скопировать код в буфер обмена
  1. $n = 0;
  2. foreach ($air_channels as $key => $value) {
  3.    if (...) {
  4.      ...
  5.      $n++;
  6.    }
  7. }
  8. echo $n;

Перед циклом инициализируем счётчик. Если условие выполнено, увеличиваем значение счётчика.
После цикла выводим значение счётчика.

(Отредактировано автором: 16 Сентября, 2014 - 08:32:51)

 
 Top
dev
Отправлено: 16 Сентября, 2014 - 08:53:55
Post Id


Новичок


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


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




PHP:
скопировать код в буфер обмена
  1. if ($air_channels)
  2. {
  3.  ksort($air_channels);
  4.  $n = 0;
  5.  foreach ($air_channels as $key => $value)
  6.    if (substr($key,0,4) == "AIR/" && in_array(substr($key,4,3),array("366","367","368","369","370","371","372","373","374","375","376","377","378","379")))
  7.   {
  8.  {
  9. echo $n;
  10.  

Вся проблема знаете в чем? оно выводит опять же "00" два нуля, число нулей соответствует числу элементов которые надо вывести но оно не считает это как "2"
 
 Top
Sail
Отправлено: 16 Сентября, 2014 - 09:48:03
Post Id



Участник


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


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




dev, где в Вашем коде увеличение счётчика ($n)? Почему вывод $n внутри цикла?
Разберитесь уже со скобочками фигурными...
PHP:
скопировать код в буфер обмена
  1. $n = 0;
  2. foreach ($air_channels as $key => $value) {
  3.     if (substr($key,0,4) == "AIR/" &&
  4.         in_array(substr($key,4,3), array("366", "367", "368", "369", "370", "371", "372", "373", "374", "375", "376", "377", "378", "379")))
  5.     {
  6.         $n++;
  7.     }
  8.  }
  9. echo $n;
 
 Top
dev
Отправлено: 16 Сентября, 2014 - 10:51:45
Post Id


Новичок


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


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




утром с просоня не то сделал=) спасибо Вам огромное это работает-_-
 
 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