Поисковая форма:) поиск по free-lance.ru Топ/история/обновления фриланса, по разным параметрам (темы, сообщения, пользователи...) Автоматическое удаление постов от ненужных юзеров в топике (php скрипт) Досье(точный ник)
 

Ник (или часть ника):
?
Какой текст ищем:
?
Раздел блогов:
За срок
дней
Тип поиска: (по вхождению: по тексту гуг выдаст посты с "гуг", "гугл", "огугл"; "полнотекстовый": по тексту "гуг" выдаст посты только с "гуг")
По вхождению строки:  Полнотекстовый: 
(поиск не 100% актуальный, есть определённая задержка при обновлении данных для поиска. )
0 Всего найдено: 28
freeproworks Сообщение 27/07/2007 05:12 Копия темы
программисты php, помогите . Подскажите пожалуйста как нужно перебрать массив чтобы найти элеммент который присудтсвует во всех массивах
пример:

Array
(
[0] => 2
)
Array
(
[0] => 2
[1] => 3
)
Array
(
[0] => 2
[1] => 3
[2] => 1
)

отсуда нужен только элемент «2». помогите плиз
Darx Сообщение 27/07/2007 05:14 Копия темы
.
Заводи еще один массив, содержащий эти массивы и перебирай его элементы.

freeproworks Сообщение 27/07/2007 05:16 Копия темы
.
я вот и не понимаю как это сделать. сижу уже несколько часов :(

pavlick Сообщение 27/07/2007 05:17 Копия темы
.
а элемент только один?

freeproworks Сообщение 27/07/2007 05:19 Копия темы
.
нет, может быть так

Array
(
[0] => 2
[1]=>3
)
Array
(
[0] => 2
[1] => 3
)
Array
(
[0] => 2
[1] => 3
[2] => 1
)

т.е. 2,3 нужно

pavlick Сообщение 27/07/2007 05:22 Копия темы
.
а эти значения в каждом из массивов уникальны?

Darx Сообщение 27/07/2007 05:22 Копия темы
.
одинаковые элементы повторяться могут?

pavlick Сообщение 27/07/2007 05:25 Копия темы
.
ты спросил то же самое на всякий случай?:))))

Darx Сообщение 27/07/2007 05:26 Копия темы
.
array_intersect(array1, array2, ...) можно вычислить схождение массивов. Результатом будет массив элементов, присутствующих в аждом из исходных )

Darx Сообщение 27/07/2007 05:27 Копия темы
.
одновременно =))

pavlick Сообщение 27/07/2007 05:36 Копия темы
.
ничего не знаю, пишу я быстро, а перед постом твоего поста не было ) твой пост даже после моего идет ))) значит, ты спросил, чтобы точно удостовериться =))))

Darx Сообщение 27/07/2007 05:37 Копия темы
.
ага =)) те несколько твоих байт полетели на пару секунд раньше, чем мои ))))

pavlick Сообщение 27/07/2007 05:38 Копия темы
.
это уже другой вопрос ))

Darx Сообщение 27/07/2007 05:38 Копия темы
.
ну тя! =))))

pavlick Сообщение 27/07/2007 06:13 Копия темы
.
а автор кудато сгинул... видимо, сам разобрался...

Darx Сообщение 27/07/2007 06:14 Копия темы
.
угу ))

freeproworks Сообщение 27/07/2007 06:33 Копия темы
.
Повторяться элементы не могут. они уникальные :)

freeproworks Сообщение 27/07/2007 06:37 Копия темы
.
а если я не знаю кол-во массивов?
мне в начале нужно через цикл прогнать чтоли?
т.е.
у меня есть массив $aaa в нем n-кол-во массивов (скажем 10)
:(

Darx Сообщение 27/07/2007 06:41 Копия темы
.
foreach() =)

www.darmen.kz/RTFM/?ask=f..

Darx Сообщение 27/07/2007 06:42 Копия темы
.
а, немного недопонял, тогда делай парный array_intersect в цикле

freeproworks Сообщение 27/07/2007 06:43 Копия темы
.
модет я туплю конечно, но не понимаю, а как я все массивы в array_intersect(array1, array2, ...) пропишу, если я не знаю их количество изначально :(

MolbO Сообщение 27/07/2007 06:43 Копия темы
.
если стандарты не устраивают
то почему не завести новый hash, где ключи это значения элементов массива,
а значения это количество (сколько раз встречалось)
перебрал все массивы добавляя в hash, а потом отбирай ключи с нужным числом попаданий
(в данном случае, со значением равным количеству массивов (3 в данном случае))

не нравится hash, сортанул массива(по возрастанию к примеру)
нашел старший элемент из ar1[0] cmp ar2[0] cmp ar3[0]
все младшие выкинул, если ничего не выкинул значит это тот элемент что тебе нужен
запоминаешь и shift на все массивы(выкидываешь этот элемент у всех)
муть конечно можно несколько оптимизировать но долго писать

не нравится, слил все массивы в один, сортанул, проходишь весь массив ищешь цепочку одного и тогоже (просто ну уже лень писать)

вообщем вариантов стоко сколько фантазии

Darx Сообщение 27/07/2007 06:48 Копия темы
.
перебирай массив, делай array_intersect попарно, предварительно запоминая результат.
На следующей итерации делай интерсект уже с ним. Вот смотри:

1. $res = array_intersect($arr[1], $arr[2]);
2. $res = array_intersect($res, $arr[3]);
3. $res = array_intersect($res, $arr[4]);
...
n-1. $res = array_intersect($res, $arr[n]);

freeproworks Сообщение 27/07/2007 07:01 Копия темы
.
Спасибо, все получилось ;)

Darx Сообщение 27/07/2007 07:08 Копия темы
.
Пожалуйста =)

saintist Сообщение 27/07/2007 07:52 Копия темы
.
через фореач рекурсивный обход многомерного массива делай, проверяй имя елемента массива и делай выборку

MolbO Сообщение 27/07/2007 08:54 Копия темы
.
уу это даже не xn как у меня а n^y, но тоже нормально

SSecurity Сообщение 28/07/2007 10:55 Копия темы
На мой взгляд можно так .
Если зачения только числовые – сначала отсортируй, а затем перебирай,
Можно сделать массив масиивов (аналог адаптированного варианта двумерного массива)

Вариант 2:
берем разделитель к примеру – ` переводим все массивый к тексту ...
т.е.

Ar1str = '`2`'
Ar2str = '`2`3`'
Ar3str = '`2`3`1`'

Потом находим самый короткий массив ... можно «короткий» массив выбрать по количеству элементов
... и запустить цикл на проверку самого короткого массива (поскольку если нет в коротком ... то без разницы есть ли в длинных или нет :) )

допустим Ar1str самый короткий, значит (структурно)

ЦИКЛ ПО I ОТ 0 ДО Рамера(Ar1)
ЕСЛИ (ВХОЖДЕНИЕ(В Ar2str, '`' + Ar1[I] + '`') не равно 0) И
(ВХОЖДЕНИЕ(В Ar3str, '`' + Ar1[I] + '`') не равно 0)
ТОГДА этот элемент есть во всех массивах
СЛЕДУЮЩИЙ I

это структурно .... для ПХП ... ВХОЖДЕНИЕ = StrStr вроде, не уверен – не помню.

С Уважением,
Коротких Сергей

0

©2008 edogs egods
Выразить восторг, поругаться
или предложить что-нибудь можно на форуме
Для обсуждения этого сервиса так же есть темы на фрилансе по
поиску , флудотопу ,и по удалённым сообщениям ,и по Актуальным/популярным темам , и по топу "кто кому больше наотвечал"