Forum Webscript.Ru

Программирование => PHP => Тема начата: xax от 23 Июля 2004, 00:56:17

Название: Такое бывает
Отправлено: xax от 23 Июля 2004, 00:56:17
Можно - ли сделать так, чтобы полученное значение в цикле, сохранялось и к нему прибавлялось следующее число цикла и так до самого конца
Название: Такое бывает
Отправлено: Меняздесьдавнонет от 23 Июля 2004, 01:39:07
бывает
просто в каждом цикле присваивай значение новой переменной.
для этого служат массивы.
Название: Такое бывает
Отправлено: xax от 23 Июля 2004, 15:13:02
RomikChef А если у меня 1000 значений?
Это тысячу переменных вводить?
нет другого решения
Название: Такое бывает
Отправлено: Меняздесьдавнонет от 23 Июля 2004, 15:22:00
Цитировать
для этого служат массивы!

ОДИН массив с тысячей элементов
Название: Такое бывает
Отправлено: xax от 23 Июля 2004, 15:22:42
RomikChef То есть нет решения?
Название: Такое бывает
Отправлено: Меняздесьдавнонет от 23 Июля 2004, 15:23:56
решение тебе сказали, чурка
МАССИВ
еще раз повторить, или со второго раза дойдет?
Название: Такое бывает
Отправлено: xax от 23 Июля 2004, 15:44:28
То есть мне нужно заключить в массив все значения цикла?
Название: Такое бывает
Отправлено: Меняздесьдавнонет от 23 Июля 2004, 15:54:54
да
при каждом проходе цикла присваивай значение новому элементу массива
массив - это много переменных в удобной форме.
каждый элемент массива - это переменная.
ты был знаком с массивами раньше, когда бился головой об гостевую книгу
Название: Такое бывает
Отправлено: Меняздесьдавнонет от 23 Июля 2004, 15:59:05
тебе нужно закючать в массиве не "все значения цикла", а то, что тебе там надо было "сохранять".
Я тебе и написал - куда надо сохранять
Название: Такое бывает
Отправлено: xax от 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;
то мне выдаётся список единиц, что не так
Название: Такое бывает
Отправлено: xax от 24 Июля 2004, 01:57:06
RomikChef Help
Название: Такое бывает
Отправлено: Mog. от 24 Июля 2004, 07:54:19
Цитировать
xax:
выдаётся список единиц, что не так

Все путем, т.к. count($sum[$x]) всегда будет равно единице.
Только потому, что $sum[$x] это одно единственное значение, скаляр, а не массив.
Правильно будет
$count=count($sum);
Вот тогда будет подсчет всех значений массива.
 
[OFF]А вопросы формулировать ты так и не научился :( [/OFF]
Название: Такое бывает
Отправлено: xax от 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;
Название: Такое бывает
Отправлено: Mog. от 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 от 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, а не нужное мне число
Название: Такое бывает
Отправлено: Mog. от 24 Июля 2004, 19:26:40
Ты прикалываешься? Ну ничего, я терпеливый.
Я имел ввиду следующее

$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;
}
print_r($sum_x);
//или
$all=count($sum_x);
for($x=1; $x<=$all; $x++)
{
echo "$x - $sum_x[$x-1]
";
}
Название: Такое бывает
Отправлено: xax от 25 Июля 2004, 01:13:11
Mog. Эх, не понял ты меня, мне не выводить нужно списком количество патчей в строке, а сосчитать их общее количество во всех строках
Название: Такое бывает
Отправлено: Mog. от 26 Июля 2004, 07:28:01
Цитировать
xax:
не понял ты меня

Учись вопросы задавать :)

$MessOnScreen = 15;
$base = "news/news.txt";
global $base, $MessOnScreen;

$arr = file($base);
$arr = array_reverse($arr);
$sum=0;
if(sizeof($arr) < $MessOnScreen) $MessOnScreen = sizeof($arr);
for ($i = 0; $i < $MessOnScreen; $i++)
{
$str = explode(";",$arr[$i]);
if(eregi("Patch", $str[16])) {
$sum++;
}
if(eregi("Patch", $str[18])) {
$sum++;
}
if(eregi("Patch", $str[28])) {
$sum++;
}
if(eregi("Patch", $str[23])) {
$sum++;
}
if(eregi("Patch", $str[33])) {
$sum++;
}
if(eregi("Patch", $str[38])) {
$sum++;
}
if(eregi("Patch", $str[43])) {
$sum++;
}
if(eregi("Patch", $str[48])) {
$sum++;
}
}

//$sum содержит общее количество патчей во всех строках файла
Название: Такое бывает
Отправлено: xax от 26 Июля 2004, 15:09:23
Mog.
Огромное спасибо