$ _POST цикл многомерных массивов - PullRequest
1 голос
/ 12 августа 2010

Итак, я создал форму, которая с помощью функции post отправляет мне несколько значений. $_POST[groups] отправляет мне, используя 4 разных флажка значения 1, 2, 4 и 8. $_POST[retailgroup] делает то же самое, но только значения 1, 2 и 4. Проблема в том, что я хочу, чтобы они сложились вместе, а затем отправили сумму значений в таблицу MySQL. Мне удалось сделать один, используя следующий цикл foreach:

foreach ( $_POST as $val ) {
    foreach ( $val as $key=>$final_val ) {
        $group = $group+$final_val;
    }
}

Проблема начинается тогда, когда мне нужно, чтобы эти два были отделены друг от друга, так как они собираются в отдельные столбцы в таблице.

Чтобы было ясно, я назначил разным группам разные значения (всегда принимая предыдущее значение, умноженное на два, как подсчет двоичного числа), например 1, 2, 4 и 8. Сложив их вместе, я могу определить членство в группах, выполнив вычитание "назад". Поскольку существуют различные виды групп, я хочу, чтобы они были разделены на два отдельных поля таблицы.

Надеюсь, все ясно.

Есть идеи, как это сделать?

Ответы [ 3 ]

3 голосов
/ 12 августа 2010

вы хотите использовать:

$groups_sum = array_sum($_POST['groups']);
$rgroups_sum = array_sum($_POST['retailgroups']);

В этом случае это будет быстрее и понятнее, чем цикл foreach.

0 голосов
/ 12 августа 2010
$groups = array_sum($_POST['groups']);
$retailGroups = array_sum($_POST['retailgroup']);

Вы можете проверить членство следующим образом вместо вычитания назад:

$groupAdmin = 4;
if($groups & $groupAdmin) {
    // is admin
}
0 голосов
/ 12 августа 2010

1001 * попробовать *

foreach ( $_POST[groups] as $key=>$final_val ) {
   //do stuff for first group
}
foreach ( $_POST[retailgroup] as $key=>$final_val ) {
   //do stuff for second group
}

и после того, как вы можете делать что хотите с переменными, полученными из циклов

...