Автор Тема: Такое бывает  (Прочитано 6366 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн xax

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 230
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Такое бывает
« : 23 Июля 2004, 00:56:17 »
Можно - ли сделать так, чтобы полученное значение в цикле, сохранялось и к нему прибавлялось следующее число цикла и так до самого конца

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Такое бывает
« Ответ #1 : 23 Июля 2004, 01:39:07 »
бывает
просто в каждом цикле присваивай значение новой переменной.
для этого служат массивы.

Оффлайн xax

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 230
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Такое бывает
« Ответ #2 : 23 Июля 2004, 15:13:02 »
RomikChef А если у меня 1000 значений?
Это тысячу переменных вводить?
нет другого решения

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Такое бывает
« Ответ #3 : 23 Июля 2004, 15:22:00 »
Цитировать
для этого служат массивы!

ОДИН массив с тысячей элементов

Оффлайн xax

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 230
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Такое бывает
« Ответ #4 : 23 Июля 2004, 15:22:42 »
RomikChef То есть нет решения?

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Такое бывает
« Ответ #5 : 23 Июля 2004, 15:23:56 »
решение тебе сказали, чурка
МАССИВ
еще раз повторить, или со второго раза дойдет?

Оффлайн xax

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 230
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Такое бывает
« Ответ #6 : 23 Июля 2004, 15:44:28 »
То есть мне нужно заключить в массив все значения цикла?

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Такое бывает
« Ответ #7 : 23 Июля 2004, 15:54:54 »
да
при каждом проходе цикла присваивай значение новому элементу массива
массив - это много переменных в удобной форме.
каждый элемент массива - это переменная.
ты был знаком с массивами раньше, когда бился головой об гостевую книгу

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Такое бывает
« Ответ #8 : 23 Июля 2004, 15:59:05 »
тебе нужно закючать в массиве не "все значения цикла", а то, что тебе там надо было "сохранять".
Я тебе и написал - куда надо сохранять

Оффлайн xax

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 230
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Такое бывает
« Ответ #9 : 23 Июля 2004, 16:06:26 »
RomikChef Учитывая, как я был с ними знаком :)
К примеру при проходе в цикле значение получает $sum
и при каждом последующем проходе оно изменяется, то мне нужно сделать что - то пипа    
$now = array($x => $sum);
foreach($now as $x=>$sum){
echo $sum[$x];
В таком случае он мне выводит список нужных мне цифр, но когда я пишу $count = count($sum[$x]);
echo $count;
то мне выдаётся список единиц, что не так
« Последнее редактирование: 23 Июля 2004, 16:21:50 от xax »

Оффлайн xax

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 230
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Такое бывает
« Ответ #10 : 24 Июля 2004, 01:57:06 »
RomikChef Help

Оффлайн Mog.

  • Фанат форума
  • Ветеран
  • *****
  • Сообщений: 828
  • +0/-0
  • 0
    • Просмотр профиля
Такое бывает
« Ответ #11 : 24 Июля 2004, 07:54:19 »
Цитировать
xax:
выдаётся список единиц, что не так

Все путем, т.к. count($sum[$x]) всегда будет равно единице.
Только потому, что $sum[$x] это одно единственное значение, скаляр, а не массив.
Правильно будет
$count=count($sum);
Вот тогда будет подсчет всех значений массива.
 
[OFF]А вопросы формулировать ты так и не научился :( [/OFF]
Все болезни от нервов, только сифилис от удовольствия

Оффлайн xax

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 230
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Такое бывает
« Ответ #12 : 24 Июля 2004, 15:22:35 »
Странно, но всё - равно выдаёт единицу
Вот код
$MessOnScreen = 15;
$base = "news/news.txt";
global $base, $MessOnScreen;

$arr = file($base);
$arr = array_reverse($arr);

if(sizeof($arr) < $MessOnScreen) $MessOnScreen = sizeof($arr);
for ($i = 0; $i < $MessOnScreen; $i++)
{
$str = explode(";",$arr[$i]);
$a = $b = $c = $d = $e = $f = $g = $h = 0;
if(eregi("Patch", $str[16])) {
$a = 1;
}
  if(eregi("Patch", $str[18])) {
$b = 1;
}
  if(eregi("Patch", $str[28])) {
$c = 1;
}
  if(eregi("Patch", $str[23])) {
$d = 1;
}
  if(eregi("Patch", $str[33])) {
$e = 1;
}
  if(eregi("Patch", $str[38])) {
$f = 1;
}
  if(eregi("Patch", $str[43])) {
$g = 1;
}
  if(eregi("Patch", $str[48])) {
$h = 1;
}
$sum = $a + $b + $c + $d + $e + $f + $g + $h;
$now = array($x => $sum);
foreach($now as $x=>$sum){
$count=count($sum);
}

}
echo $count;
« Последнее редактирование: 24 Июля 2004, 15:56:29 от xax »

Оффлайн Mog.

  • Фанат форума
  • Ветеран
  • *****
  • Сообщений: 828
  • +0/-0
  • 0
    • Просмотр профиля
Такое бывает
« Ответ #13 : 24 Июля 2004, 17:30:58 »
[OFF]Ох, мама...[/OFF]
Ну скажи, где написано, что у тебя $sum это массив?
У тебя это голимый скаляр. count потому и выдает единицу.
И это только во первых...
Хотя я вроде понял, что ты хочешь сделать (вроде)
Патчи могут встречаться в каждой строке файла, причем в определенных позициях строки и ты хочешь подсчитать сколько в каждой строке этих самых патчей.
Если это так то:
1. Сотвори перед циклом фор массив $sum_x=array();
2. После всех твоих if\'ов в цикле фор переменная $sum содержит количество патчей в строке файла.
3. Тут же засовывай это значение в вышесозданный массив $sum_x[]=$sum;
4. По окнчании цикла фор у тебя будет массив, заполненный данными, выводя его любым известным тебе способом, ты получишь искомое.
Причем, индекс массива =0 будет соответствовать количеству патчей в последней строке файла, индекс=1 - в предпоследней, ..., индекс=последний_элемент_массива - в первой строке файла.
И зачем тебе какой то count?

И еще.
Ну зачем тебе в цикле фор цикл форич?
И, если ты все время заново будешь создавать массив с одним и тем же именем функцией array() у тебя сохраниться в нем только последнее значение. Ты об этом задумывался?
Все болезни от нервов, только сифилис от удовольствия

Оффлайн xax

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 230
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Такое бывает
« Ответ #14 : 24 Июля 2004, 19:02:26 »
Если ты имел ввиду
$MessOnScreen = 15;
$base = "news/news.txt";
global $base, $MessOnScreen;

$arr = file($base);
$arr = array_reverse($arr);
$sum_x=array();
if(sizeof($arr) < $MessOnScreen) $MessOnScreen = sizeof($arr);
for ($i = 0; $i < $MessOnScreen; $i++)
{
$str = explode(";",$arr[$i]);
$a = $b = $c = $d = $e = $f = $g = $h = 0;
if(eregi("Patch", $str[16])) {
$a = 1;
}
if(eregi("Patch", $str[18])) {
$b = 1;
}
if(eregi("Patch", $str[28])) {
$c = 1;
}
if(eregi("Patch", $str[23])) {
$d = 1;
}
if(eregi("Patch", $str[33])) {
$e = 1;
}
if(eregi("Patch", $str[38])) {
$f = 1;
}
if(eregi("Patch", $str[43])) {
$g = 1;
}
if(eregi("Patch", $str[48])) {
$h = 1;
}
$sum = $a + $b + $c + $d + $e + $f + $g + $h;

}
$sum_x[]=$sum;
echo $sum;
то echo $sum - выводит число 4, а не нужное мне число

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28