zaartix
Новичок
массив, определение разниц
Этот пост можно назвать продолженнием
http://phpclub.ru/talk/showthread.php?s=&threadid=95157
Только вот отдельная задачка оттуда вычленяется:
имеем массив разных по длине одномерных массивов
необходимо получить следующий массив их него:
т.е. надо взять каждый элемент каждого массива для каждого из элементов массива
то так сложнее понять
имхо матрией выше нагляднее
если вдруг непонятно, поясню немного по-другому:
есть массив, можно посмотреть его реальный пример тут:
http://gold.1ya.ru/1.php
надо от него получить следующее (диффы - это то, что надо будет сделать как раз с получившимися элементами нового массива):
20-4-216 -> min 4, max 216, diff 212
20-4-251 -> min 4, max 251, diff 247
.....
20-48-216 -> min 20, max 216, diff 196
20-48-251 -> min 20, max 251, diff 231
.....
и т.д. по всем элементам
поясню
сравниваем (получаем массив, чтобы потом вычислить диффы):
1 элемент 1-го массива с 1-ым элементом 2-го массива и с 1-ым элементом 3-го массива (дальше определяем максимум, минимум и разницу)
1 элемент 1-го массива с 1-ым элементом 2-го массива и с 2-ым элементом 3-го массива
.....
1 элемент 1-го массива с 2-ым элементом 2-го массива и с 1-ым элементом 3-го массива
1 элемент 1-го массива с 2-ым элементом 2-го массива и с 2-ым элементом 3-го массива
и т.д.
-~{}~ 12.01.07 18:43:
есть решение
$pos - входной двумерный массив
$res - выходной двумерный массив
Этот пост можно назвать продолженнием
http://phpclub.ru/talk/showthread.php?s=&threadid=95157
Только вот отдельная задачка оттуда вычленяется:
имеем массив разных по длине одномерных массивов
PHP:
Array
(
[0] => Array
(
[0] => 20
[1] => 176
[2] => 177
)
[1] => Array
(
[0] => 4
)
[2] => Array
(
[0] => 216
[1] => 251
)
)
PHP:
Array
(
[0] => Array
(
[0] => 20
[1] => 4
[2] => 216
)
[1] => Array
(
[0] => 20
[1] => 4
[2] => 251
)
[2] => Array
(
[0] => 174
[1] => 4
[2] => 216
)
[3] => Array
(
[0] => 176
[1] => 4
[2] => 251
)
[4] => Array
(
[0] => 177
[1] => 4
[2] => 216
)
[5] => Array
(
[0] => 177
[1] => 4
[2] => 251
)
)
то так сложнее понять
имхо матрией выше нагляднееесли вдруг непонятно, поясню немного по-другому:
есть массив, можно посмотреть его реальный пример тут:
http://gold.1ya.ru/1.php
надо от него получить следующее (диффы - это то, что надо будет сделать как раз с получившимися элементами нового массива):
20-4-216 -> min 4, max 216, diff 212
20-4-251 -> min 4, max 251, diff 247
.....
20-48-216 -> min 20, max 216, diff 196
20-48-251 -> min 20, max 251, diff 231
.....
и т.д. по всем элементам
поясню
сравниваем (получаем массив, чтобы потом вычислить диффы):
1 элемент 1-го массива с 1-ым элементом 2-го массива и с 1-ым элементом 3-го массива (дальше определяем максимум, минимум и разницу)
1 элемент 1-го массива с 1-ым элементом 2-го массива и с 2-ым элементом 3-го массива
.....
1 элемент 1-го массива с 2-ым элементом 2-го массива и с 1-ым элементом 3-го массива
1 элемент 1-го массива с 2-ым элементом 2-го массива и с 2-ым элементом 3-го массива
и т.д.
-~{}~ 12.01.07 18:43:
есть решение
$pos - входной двумерный массив
$res - выходной двумерный массив
PHP:
$width=1;
foreach ($pos as $v) {
$width = sizeof($v)*$width;
}
$depth = sizeof($pos);
for ($i=0;$i<$depth;$i++) {$idx[$i] = 0;}
$ptr = 0;
while ($ptr<$width) {
for ($i=0;$i<$depth; $i++) {
$res[$ptr][$i] = $pos[$i][$idx[$i]];
}
$idx[$depth-1]++;
for ($i=$depth-1; $i>0 ;$i--){
if ($idx[$i]>=sizeof($pos[$i])) {
$idx[$i] = 0;
$idx[$i-1]++;
}
}
$ptr++;
}
echo '<pre>';
print_r($pos);
echo '</pre>';
echo '<pre>';
print_r($res);
echo '</pre>';