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
Форумы портала PHP.SU :: Версия для печати :: Создание разнообразных вариантов массивов из массива
Форумы портала PHP.SU » » Объектно-ориентированное программирование » Создание разнообразных вариантов массивов из массива

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

1. 3d_killer - 13 Апреля, 2016 - 17:40:58 - перейти к сообщению
Никак не могу придумать функцию которая бы это сделала, есть именованный массив вида:
CODE (html):
скопировать код в буфер обмена
  1.  
  2. array(2) {
  3.   ["prop_size"]=>
  4.   array(2) {
  5.     [10]=>
  6.     array(1) {
  7.       [0]=>
  8.       string(1) "1"
  9.     }
  10.     [7]=>
  11.     array(1) {
  12.       [0]=>
  13.       string(1) "2"
  14.     }
  15.   }
  16.   ["prop_color"]=>
  17.   array(3) {
  18.     [11]=>
  19.     array(2) {
  20.       [0]=>
  21.       string(2) "18"
  22.       [1]=>
  23.       string(2) "37"
  24.     }
  25.     [9]=>
  26.     array(4) {
  27.       [0]=>
  28.       string(2) "16"
  29.       [1]=>
  30.       string(2) "13"
  31.       [2]=>
  32.       string(2) "30"
  33.       [3]=>
  34.       string(2) "18"
  35.     }
  36.     [8]=>
  37.     array(1) {
  38.       [0]=>
  39.       string(2) "21"
  40.     }
  41.   }
  42. }

на сколько видно ключи расположены в хаотичном порядке
необходимо получить все вариации параметров (prop_color, prop_size) параметров неизвестное количество
нужно получить возможные варианты товаров
знаю что нужно декартово произведение, и находил похожие функции, но все привязаны к ключам, что то как то сам допетрить не могу, прошу помощи
(Добавление)
в идеале на выходе получить что то похожее на это:
CODE (html):
скопировать код в буфер обмена
  1.  
  2.         array(
  3.         0=>
  4.                 array(
  5.                 'size'=>array(
  6.                         0=>3,
  7.                         1=>7,
  8.                         2=>5),
  9.                 'color'=>array(
  10.                         0=>3,
  11.                         1=>4)
  12.                   ),
  13.         1=>
  14.                 array(
  15.                 'size'=>array(
  16.                         0=>3,
  17.                         1=>7,
  18.                         2=>5),
  19.                 'color'=>array(
  20.                         0=>3,
  21.                         1=>4)
  22.                   )
  23.                 2=>
  24.                 array(
  25.                 'size'=>array(
  26.                         0=>3,
  27.                         1=>7,
  28.                         2=>5),
  29.                 'color'=>array(
  30.                         0=>3,
  31.                         1=>4)
  32.                   )
  33.           );
  34.  
2. 3d_killer - 13 Апреля, 2016 - 18:13:32 - перейти к сообщению
нарисовал более понятнее
(Добавление)
получилось чуть упорядочить, но он так же именованный
CODE (html):
скопировать код в буфер обмена
  1. array(2) {
  2.   ["prop_size"]=>
  3.   array(2) {
  4.     [0]=>
  5.     array(1) {
  6.       [0]=>
  7.       string(1) "3"
  8.     }
  9.     [1]=>
  10.     array(2) {
  11.       [0]=>
  12.       string(1) "3"
  13.       [1]=>
  14.       string(1) "4"
  15.     }
  16.   }
  17.   ["prop_color"]=>
  18.   array(3) {
  19.     [0]=>
  20.     array(1) {
  21.       [0]=>
  22.       string(2) "24"
  23.     }
  24.     [1]=>
  25.     array(1) {
  26.       [0]=>
  27.       string(2) "21"
  28.     }
  29.     [2]=>
  30.     array(2) {
  31.       [0]=>
  32.       string(2) "17"
  33.       [1]=>
  34.       string(2) "24"
  35.     }
  36.   }
  37. }
3. armancho7777777 - 14 Апреля, 2016 - 02:24:53 - перейти к сообщению
PHP Cartesian Function
4. 3d_killer - 14 Апреля, 2016 - 09:54:02 - перейти к сообщению
Спасибо, вчера уже сделал, сохраню на всякий случай
5. armancho7777777 - 14 Апреля, 2016 - 10:17:58 - перейти к сообщению
Не за что.

 

Powered by ExBB FM 1.0 RC1