Forum Webscript.Ru
Программирование => PHP => Тема начата: xax от 23 Июля 2004, 00:56:17
-
Можно - ли сделать так, чтобы полученное значение в цикле, сохранялось и к нему прибавлялось следующее число цикла и так до самого конца
-
бывает
просто в каждом цикле присваивай значение новой переменной.
для этого служат массивы.
-
RomikChef А если у меня 1000 значений?
Это тысячу переменных вводить?
нет другого решения
-
для этого служат массивы!
ОДИН массив с тысячей элементов
-
RomikChef То есть нет решения?
-
решение тебе сказали, чурка
МАССИВ
еще раз повторить, или со второго раза дойдет?
-
То есть мне нужно заключить в массив все значения цикла?
-
да
при каждом проходе цикла присваивай значение новому элементу массива
массив - это много переменных в удобной форме.
каждый элемент массива - это переменная.
ты был знаком с массивами раньше, когда бился головой об гостевую книгу
-
тебе нужно закючать в массиве не "все значения цикла", а то, что тебе там надо было "сохранять".
Я тебе и написал - куда надо сохранять
-
RomikChef Учитывая, как я был с ними знаком :)
К примеру при проходе в цикле значение получает $sum
и при каждом последующем проходе оно изменяется, то мне нужно сделать что - то пипа
$now = array($x => $sum);
foreach($now as $x=>$sum){
echo $sum[$x];
В таком случае он мне выводит список нужных мне цифр, но когда я пишу $count = count($sum[$x]);
echo $count;
то мне выдаётся список единиц, что не так
-
RomikChef Help
-
xax:
выдаётся список единиц, что не так
Все путем, т.к. count($sum[$x]) всегда будет равно единице.
Только потому, что $sum[$x] это одно единственное значение, скаляр, а не массив.
Правильно будет
$count=count($sum);
Вот тогда будет подсчет всех значений массива.
[OFF]А вопросы формулировать ты так и не научился :( [/OFF]
-
Странно, но всё - равно выдаёт единицу
Вот код
$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;
-
[OFF]Ох, мама...[/OFF]
Ну скажи, где написано, что у тебя $sum это массив?
У тебя это голимый скаляр. count потому и выдает единицу.
И это только во первых...
Хотя я вроде понял, что ты хочешь сделать (вроде)
Патчи могут встречаться в каждой строке файла, причем в определенных позициях строки и ты хочешь подсчитать сколько в каждой строке этих самых патчей.
Если это так то:
1. Сотвори перед циклом фор массив $sum_x=array();
2. После всех твоих if\'ов в цикле фор переменная $sum содержит количество патчей в строке файла.
3. Тут же засовывай это значение в вышесозданный массив $sum_x[]=$sum;
4. По окнчании цикла фор у тебя будет массив, заполненный данными, выводя его любым известным тебе способом, ты получишь искомое.
Причем, индекс массива =0 будет соответствовать количеству патчей в последней строке файла, индекс=1 - в предпоследней, ..., индекс=последний_элемент_массива - в первой строке файла.
И зачем тебе какой то count?
И еще.
Ну зачем тебе в цикле фор цикл форич?
И, если ты все время заново будешь создавать массив с одним и тем же именем функцией array() у тебя сохраниться в нем только последнее значение. Ты об этом задумывался?
-
Если ты имел ввиду
$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, а не нужное мне число
-
Ты прикалываешься? Ну ничего, я терпеливый.
Я имел ввиду следующее
$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]
";
}
-
Mog. Эх, не понял ты меня, мне не выводить нужно списком количество патчей в строке, а сосчитать их общее количество во всех строках
-
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 содержит общее количество патчей во всех строках файла
-
Mog.
Огромное спасибо