как посчитать выводимые в key значения? прошу помощи

dev

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

PHP:
 if (substr($key,0,4) == "AIR/" && in_array(substr($key,4,3),array("123","321","567","894","111","222","564","864")))
  {
  echo "\n* $key *\n";

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

Код:
 * AIR/564-0000906c * * AIR/321-00008cab * * AIR/222-0000806f * * AIR/111-00009067 *
скажите пожалуйста как мне считать $key перед выводом мне надо получать число сколько там значений, разделителем служит звездочка * потому что оно выводит все в одну строку и я не знаю как такое можно посчитать.
я думал может считать сколько в строке будет AIR/ встречаться такое число и выйдет, но у меня всеравно не выходит. пробовал считать через
count($key) но оно выводит 1, потому что оно наверно считает всю строку)
Помогите
 

dev

Новичок
Спасибо Вам за ответ
сделал так сейчас
PHP:
$n = $n + 1;
echo "\n* $n *\n";
выводит

* 1 * * 2 * * 3 * * 4 * * 5 * * 6 *

мне нужно получить конечное число 6, ведь если даже сделаю каунт $n оно мне единицы выведет
 

С.

Продвинутый новичок
Конечное число 6 лежит в $n, в открытом виде без всяких каунтов.
 

dev

Новичок
это не в моих интересах....я три дня уже ломаю голову как это сделать и мне не до вранья

PHP:
if ($air_channels)
{
ksort($air_channels);
foreach ($air_channels as $key => $value)
{
  if (substr($key,0,4) == "SIP/"  && in_array(substr($key,4,3),array("123","321","658","965","547","354","346","348","189","147","123","157","121","325","359","796","724","701")))
  {
    $n = $n + 1;
    echo "\n* $n";
на выходе я получу * 1 * * 2 * * 3 * * 4 * * 5 * * 6 * или * 1 * * 2 * * 3 * а надо ответ 6 для первого случая и 3 для второго
 

DIG

Новичок
Партнер клуба
dev а если попробовать вынести
PHP:
echo "\n* $n";
из цикла ? Я конечно не специалист, но вдруг сработает...
 

AnrDaemon

Продвинутый новичок
это не в моих интересах....я три дня уже ломаю голову как это сделать и мне не до вранья
Поймите простую вещь. Программа делает именно то, что вы ей сказали делать. В пределах ограничений среды исполнения, конечно, но это не ваш случай.
У вас простейшая алгоритмическая ошибка, за которую нам в технаре двойки ставили. Мне просто стыдно в неё пальцем тыкать.
 

dev

Новичок
Поймите простую вещь. Программа делает именно то, что вы ей сказали делать. В пределах ограничений среды исполнения, конечно, но это не ваш случай.
У вас простейшая алгоритмическая ошибка, за которую нам в технаре двойки ставили. Мне просто стыдно в неё пальцем тыкать.
спасибо Вы мне очень помогли!
 

michelle

Новичок
Пилим статистику для астериска? ;)

А после цикла чему у тебя равно $n?
 

dev

Новичок
Пилим статистику для астериска? ;)

А после цикла чему у тебя равно $n?
типа того, мне надо просто знать цифру сколько людей говорят
после цикла сразу я получаю строку со всему сипами, потом выбираю и получаю только тех кто говорит и остается только посчитать их число а если по результату выборки окажется что никто не говорит и вывести 0, в теории все просто, но это только в теории
 

dev

Новичок
PHP:
foreach ($air_channels as $key => $value)
$n = $n + 1;
echo "\n* $n";
{
выводит * 13
 
Последнее редактирование:

michelle

Новичок
1. Откуда эти данные? core show channels или что?
2. Что ты хочешь сделать - так как код выдран из контекста
 

dev

Новичок
да эти данные из "core show channels"

я хочу выбрать людей которые в данный момент разговаривают, через show channels смотрю кто говорит и получаю список
 

WMix

герр M:)ller
Партнер клуба
В цикле выполняется только
$n = $n + 1;
Остальное не проверял
 

dev

Новичок
А где $n = 0;

Петя дал Васе 3 яблока. Сколько яблок у Васи? Три? А вот и нет - обнуляйте значения перед использованием!
PHP:
$n = 0;
foreach ($air_channels as $key => $value)
$n = $n + 1;
echo "\n* $n";
{
перед использованием обнуляю и получаю вывод * 1, потому что получается, что я обнулил и оно добавило +1 поэтому и получилось 1
 
Последнее редактирование:

michelle

Новичок
Товарисч dev, почтитай пожалуйста книжки по информатике, хотя-бы для школьников.
Сразу поймешь свою ошибку.
 
Сверху