Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Все возможные комбинации элементво массива

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (3): [1] 2 3 »   

> Описание: кроме элементов с одинаковыми индексами
NoPaper
Отправлено: 25 Июля, 2012 - 20:28:15
Post Id



Посетитель


Покинул форум
Сообщений всего: 315
Дата рег-ции: Янв. 2012  
Откуда: Минск


Помог: 9 раз(а)




Доброго времени суток. Нужна помощь в решении проблемы.
Есть два массива
PHP:
скопировать код в буфер обмена
  1.  
  2.         $a1 = array('минута00','час00');
  3.         $a2 = array('минута0','час0');
  4.  


в результате должен получить все возможные комбинации между элементами массива у которых не равен индекс.
К примеру у значений часа и минуты могут быть нули 00, 01 и т.п. , а может и не быть 0,1...

Полученные значения должны быть такими
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. минута00+час00
  3. минута00+час0
  4. минута0+час00
  5. минута0+час0
  6. час00+минута00
  7. час00+минута0
  8. час0+минута0
  9. час0+минута00


есть код с циклами, но он не универсален, если добавить в массивы день00 и день0, скрипт начинает работать не верно. Есть мысли? Закатив глазки
 
 Top
PVG
Отправлено: 25 Июля, 2012 - 20:52:56
Post Id


Гость


Покинул форум
Сообщений всего: 65
Дата рег-ции: Май 2012  


Помог: 0 раз(а)




Посмотри функции с не орграниченным кол-вом переменных, где этими неограниченным кол-во будут выступать элементы массивов. Найди количество элементов в функции, а потом уже и цикл сможет работать для них всех.
 
 Top
NoPaper
Отправлено: 26 Июля, 2012 - 10:00:56
Post Id



Посетитель


Покинул форум
Сообщений всего: 315
Дата рег-ции: Янв. 2012  
Откуда: Минск


Помог: 9 раз(а)




Если честно, не очень понятно что делать с этой функцией...
 
 Top
Toxa
Отправлено: 26 Июля, 2012 - 11:24:30
Post Id



Посетитель


Покинул форум
Сообщений всего: 352
Дата рег-ции: Окт. 2008  


Помог: 8 раз(а)

[+]


для начала я бы получил массив минут и отдельно массив часов

PHP:
скопировать код в буфер обмена
  1. $a1 = array('минута00','минута0');
  2. $a2 = array('час00','час0');

Затем задача значительно упращается

PHP:
скопировать код в буфер обмена
  1. foreach($a1 as $m)
  2. {
  3.     foreach($a2 as $h)
  4.     {
  5.         echo "$m+$h";
  6.         echo "$h+$m";
  7.     }
  8. }

вот и все

(Отредактировано автором: 26 Июля, 2012 - 11:25:50)



-----
Удобный сервис для хранения файлов
 
 Top
PVG
Отправлено: 26 Июля, 2012 - 11:27:54
Post Id


Гость


Покинул форум
Сообщений всего: 65
Дата рег-ции: Май 2012  


Помог: 0 раз(а)




Вот, посмотри:
http://it-student[dot]com[dot]ua/verkhne[dot][dot][dot]funkcii-php[dot]html

По поводу кода:

PHP:
скопировать код в буфер обмена
  1.  
  2. function addElements()
  3.  {
  4.   $num = func_num_args();
  5.   $args = func_get_args();
  6.   for($i=0; $i<$num; $i++)
  7.   {
  8.    array_push($masiv,$args[$i]);\\этой функцией мы вставляем в массив аргументов новые значения, в твоем случае это (минута, час, день)
  9.   }
  10.  }
  11. \\то есть чтобы создать массив из всех нужных тебе элементов, пишешь так:
  12. addElements('минута00', 'минута0', 'час00', 'час0', 'день00', 'день0');
  13. while ($masiv[i]) {
  14. $num = $num+1;
  15. $i=$i+1;
  16. }
  17. \\poschitali kolvo elementov massiva. V dannom sluchae ih 6
  18.  


А вот теперь у меня есть одно предложение- перемешивать все вложенными циклами. Только по моему это плохое решение.

Специалисты, что можно тут придумать? А если нельзя ничего, то как можно задавать кол-во вложенных циклов прямо в программе (в данном случае чтобы их было 6, а если убрать день00 и день0, то 4 и т.д.). Можно ли это как-то автоматизировать?

P.S.: Написал что думал, если бред, извините Радость .
(Добавление)
Toxa, так ему нужно добавлять еще "единицы времени", тогда уже твой код не подойдет, т.к. он для часа и минуты. Вот у меня мысли похожие как у тебя (только я все в 1 массив собирал), не понятно как сделать так, чтобы программа сама вкладывала сколько нужно циклов.
 
 Top
tuareg
Отправлено: 26 Июля, 2012 - 12:04:23
Post Id


Участник


Покинул форум
Сообщений всего: 1234
Дата рег-ции: Июнь 2010  


Помог: 69 раз(а)




Вот посмотрите тему. Должно подойти. http://forum.php.su/topic.php?fo...pic=6137&p=2
 
 Top
LIME
Отправлено: 26 Июля, 2012 - 12:38:18
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




tuareg там посложнее случай был
не разберутся раз такие вопросы
Toxa все так но можно проще
PHP:
скопировать код в буфер обмена
  1. foreach($a1 as $k1=>$m)
  2. {
  3.     foreach($a2 as $k2=>$h)
  4.     {
  5.         if($k1==$k2) continue;
  6.         echo "$m+$h";
  7.         echo "$h+$m";
  8.     }
  9. }

(Добавление)
стоп...я всетаки не понял задачу оказывается
 
 Top
armancho7777777 Супермодератор
Отправлено: 26 Июля, 2012 - 15:57:32
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




LIME пишет:
там посложнее случай был

Вообще-то, это то, что поможет ТС )
 
 Top
tuareg
Отправлено: 26 Июля, 2012 - 15:58:21
Post Id


Участник


Покинул форум
Сообщений всего: 1234
Дата рег-ции: Июнь 2010  


Помог: 69 раз(а)




LIME согласен. Тут прямо в лоб не решить. Надо думать "серьезно" Радость
Хотя по идее можно использовать принцип моего решения.
 
 Top
LIME
Отправлено: 26 Июля, 2012 - 16:05:05
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




зависит от задачи
может быть > 2 элементов?
кол-во массивов любое?
(Добавление)
возможно и не нужно универсальное решение
 
 Top
tuareg
Отправлено: 26 Июля, 2012 - 16:05:46
Post Id


Участник


Покинул форум
Сообщений всего: 1234
Дата рег-ции: Июнь 2010  


Помог: 69 раз(а)




armancho7777777 пишет:
Вообще-то, это то, что поможет ТС )

Не-а. Улыбка Мой вариант возвратил бы 4 результата. а тут 9. Но я согласен, что его просто надо доработать Улыбка
 
 Top
armancho7777777 Супермодератор
Отправлено: 26 Июля, 2012 - 16:13:44
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




Я имел ввиду алгоритм)
 
 Top
NoPaper
Отправлено: 26 Июля, 2012 - 19:08:09
Post Id



Посетитель


Покинул форум
Сообщений всего: 315
Дата рег-ции: Янв. 2012  
Откуда: Минск


Помог: 9 раз(а)




LIME пишет:
зависит от задачи
может быть > 2 элементов?
кол-во массивов любое?
(Добавление)
возможно и не нужно универсальное решение

нужно универсальное решение, массивов, как и элементов может быть n-ное количество, при этом количество элементов в каждом массиве будет равным.

п.с. жаль далеко от компа , не могу проверить предложенные варианты на работоспособность ...
 
 Top
LIME
Отправлено: 26 Июля, 2012 - 19:15:05
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




раз так то из всего предложенного стоит рассмотреть только вариант по ссылке
 
 Top
PVG
Отправлено: 26 Июля, 2012 - 19:33:17
Post Id


Гость


Покинул форум
Сообщений всего: 65
Дата рег-ции: Май 2012  


Помог: 0 раз(а)




А можно как-то создать массив функций?
 
 Top
Страниц (3): [1] 2 3 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB