подсчёт кол-ва элементов в массиве, разделённые символом

server

Новичок
подсчёт кол-ва элементов в массиве, разделённые символом

туплю по страшному, может к утру решу, в общем есть массив :
Array ( [0] => 0 [1] => 7 [2] => 0 [3] => 6 [4] => 2 [5] => 1 [6] => 2 [7] => 6 [8] => 0 [9] => 1 [10] => 9 [11] => 3 [12] => 2 [13] => 0 [14] => 6 [15] => 4 [16] => 2 [17] => 4 [18] => 6 [19] => 0 [20] => 7 [21] => 7 [22] => 9 [23] => 8 [24] => 6 [25] => 8 [26] => 6 [27] => 6 [28] => 2 [29] => 0 [30] => 1 [31] => 8 [32] => 3 [33] => 2 [34] => 0 [35] => 6 [36] => 6 [37] => 4 [38] => 5 [39] => 5 [40] => 0 [41] => 6 [42] => 4 [43] => 2 [44] => 4 [45] => 4 [46] => 0 [47] => 6 [48] => 2 [49] => 1 [50] => 2 [51] => 6 [52] => 0 [53] => 0 [54] => 6 [55] => 4 [56] => 2 [57] => 4 [58] => 6 [59] => 0 [60] => 6 [61] => 4 [62] => 2 [63] => 4 [64] => 4 [65] => 6 [66] => 4 [67] => 2 [68] => 4 [69] => 6 [70] => 0 [71] => 0 [72] => 6 [73] => 2 [74] => 1 [75] => 2 [76] => 6 [77] => 0 [78] => 0 [79] => 0 [80] => 2 [81] => 0 [82] => 6 [83] => 1 [84] => 1 [85] => 1 [86] => 0 [87] => 6 [88] => 2 [89] => 1 [90] => 2 [91] => 6)
надо посчитать сколько элементов между нулями и сколько таких кусков, ну сколько кусков посчитать знаю как, а вот сколько элементов между нулями, не работает...
СПАСИБО!
 

Фанат

oncle terrible
Команда форума
какая проблема перебирать массив по одному элементу выставляя флаг появления нуля, посчитать все "куски"?
 

server

Новичок
извините, я не знаю, как ещё описать...
приведу пример:
Array ( [0] => 0 [1] => 7 [2] => 0 [3] => 6 [4] => 2 [5] => 1 [6] => 2 [7] => 6 [8] => 0 )
ключ 1 заключен между нулями, количество ключей и ненулевых элементов здесь 1, далее между нулями 4 элемента (начиная с 3-го по 7-ой), я сравниваю каждый элемент с нулём, если ноль, беру следующий и опять сравниваю, если не нулевой, то прибовляю 1, пока не встретится следующий ноль... примерно так
for ($l=0;$l<$x_;$l++)
{
for ($i=0;($i<14)&&($il<$x_);$i++)
{ $il=$l+$i;
if ($kolich_pic[$il]!==0) {$glub_pic++;} else {$glub_pic=0;}
}
}
$i<14- элементов в "куске" не может быть более 14 ,
далее надо в другом массиве то же самое сделать , и сравнить элементы в полученных кусках, куски должны быть одного размера (с одинаковым количестовм элементов), сравнивать буду в процентном отношении, в общем нужно найти одинаковые вхождения одного массива с другим, причём элементы в них не одинаковые, и их количество разное, но точно известно, что хотя бы один кусок подходит к куску в другом массиве, по количеству элементов, надо вычислить с какой точностью...
Ещё раз "кусок"- кол-во элиментов между нулями
 

Фанат

oncle terrible
Команда форума
задачу я понял с первого раза.
повторяю свой вопрос:
какая проблема перебирать массив по одному элементу, и выставляя флаг появления нуля, посчитать все "куски"?
 

server

Новичок
да, и ещё массив может быть таким...
Array ( [0] => 0 [1] => 7 [2] => 0 [3] => 6 [4] => 2 [5] => 1 [6] => 2 [7] => 6 [8] => 0 [9] => 1 [10] => 9 [11] => 3 [12] => 2 [13] => 0 [14] => 6 [15] => 4 [16] => 2 [17] => 4 [18] => 6 [19] => 0 [20] => 7 [21] => 7 [22] => 9 [23] => 8 [24] => 6 [25] => 8 [26] => 6 [27] => 6 [28] => 2 [29] => 0 [30] => 1 [31] => 8 [32] => 3 [33] => 2 [34] => 0 [35] => 6 [36] => 6 [37] => 4 [38] => 5 [39] => 5 [40] => 0 [41] => 6 [42] => 4 [43] => 2 [44] => 4 [45] => 4 [46] => 0 [47] => 6 [48] => 2 [49] => 1 [50] => 2 [51] => 6 [52] => 0 [53] => 0 [54] => 6 [55] => 4 [56] => 2 [57] => 4 [58] => 6 [59] => 0 [60] => 6 [61] => 4 [62] => 2 [63] => 4 [64] => 4 [65] => 6 [66] => 4 [67] => 2 [68] => 4 [69] => 6 [70] => 0 [71] => 0 [72] => 6 [73] => 2 [74] => 1 [75] => 2 [76] => 6 [77] => 0 [78] => 0 [79] => 0 [80] => 2 [81] => 0 [82] => 6 [83] => 1 [84] => 1 [85] => 1 [86] => 0 [87] => 6 [88] => 2 [89] => 1 [90] => 2 [91] => 6 [92] => 0 [93] => 0 [94] => 0 [95] => 0 [96] => 0 [97] => 0 [98] => 0 [99] => 0 [100] => 0 [101] => 0 [102] => 0 [103] => 0 [104] => 0 [105] => 0 [106] => 0 [107] => 0 [108] => 0 [109] => 0 [110] => 0 [111] => 0 [112] => 0 [113] => 0 [114] => 0 [115] => 0 [116] => 0 [117] => 0 [118] => 0 [119] => 0 [120] => 0 [121] => 0 [122] => 0 [123] => 0 [124] => 0 [125] => 0 [126] => 0 [127] => 0 [128] => 0 [129] => 0 [130] => 0 [131] => 0 [132] => 0 [133] => 0 [134] => 0 [135] => 0 [136] => 0 [137] => 0 [138] => 0 [139] => 0 [140] => 0 [141] => 0 [142] => 0 [143] => 0 [144] => 0 [145] => 0 [146] => 0 [147] => 0 [148] => 0 [149] => 0 [150] => 0 [151] => 0 [152] => 0 [153] => 0 [154] => 0 [155] => 0 [156] => 0 [157] => 0 [158] => 0 [159] => 0 [160] => 0 [161] => 0 [162] => 0 [163] => 0 [164] => 0 [165] => 0 [166] => 0 [167] => 0 [168] => 0 [169] => 0 [170] => 0 [171] => 0 [172] => 0 [173] => 0 [174] => 0 [175] => 0 [176] => 0 [177] => 0 [178] => 0 [179] => 0 [180] => 0 [181] => 0 [182] => 0 [183] => 0 [184] => 0 [185] => 0 [186] => 0 [187] => 0 [188] => 0 [189] => 0 [190] => 0 [191] => 0 [192] => 0 [193] => 0 [194] => 0 [195] => 0 [196] => 0 [197] => 0 [198] => 0 [199] => 0 )

т.е с какого-то ключа далее одни нули...

-~{}~ 10.09.06 21:36:

а как посчитать количество элементов в куске, кот-ые разделены?
 

Фанат

oncle terrible
Команда форума
ПЕРЕМЕННОЙ-СЧЁТЧИКОМ!!!
$i=$i+1
такая конструкция тебе знакома?!
 

server

Новичок
знакома... но тот код кот-ый я привёл, не работает коректно, т.е. мне нужно последнее значение счётчика.. а я туплю
 

Фанат

oncle terrible
Команда форума
зачем тебе в том коде, который ты привёл, вложенный цикл?
 

server

Новичок
for ($l=0;$l<$x_;$l++) //перебираю все элементы одним
{
if ($kolich_pic[$l]==0)
{ // если ноль, то смотрим следующие 14
for ($i=0;($i<14)&&($il<$x_);$i++)
{$il=$l+$i;
if ($kolich_pic[$il]!==0) { $glub_pic++;} else {break;}

}
}

так должно работать или я замудрил... попробую , будет возможность

-~{}~ 10.09.06 21:50:

} забыл в конце
 

Фанат

oncle terrible
Команда форума
МАМА!!!
всё надо делать в одном и том же цикле!
ЕСЛИ НОЛЬ, то выставляем флаг разделения кусков.
если флаг разделения кусков и не ноль, то идёт кусок. с ним работает.

тебе IF нужен внутри цикла, а не FOR!
и не один!
 

server

Новичок
> тебе IF нужен внутри цикла, а не FOR!
и не один!
А сколько - 14?
 

Фанат

oncle terrible
Команда форума
да ты философ, я смотрю!
Но лучше бы ты был программистом.
 

server

Новичок
так программисты пишут обычно столбы данных? я просто люблю компактность)
 

server

Новичок
а поподробнее, я так и не понял, чем вы помогли мне... только подобие стёба... если нечем помочь, то и не надо разводить дискусси кто програмист, и где они живут, и что как устроено и правильно... я хотел совета, а не наставления

-~{}~ 10.09.06 22:42:

спасибо , сам посчитал уже...
if ($kolich_pic[$l]==0)
{ $il=0;
for ($i=1;($i<14)&&($il<$x_);$i++)
{$il=$l+$i;
if ($kolich_pic[$il]!==0) { $glub_pic++; $a=$glub_pic;} else {$glub_pic=0;break;}
}echo("$a <br>");
}
 
Сверху