Foreach с двумя array

У меня есть два array, что выходят из двух select многообразно, который я хочу сочетать, чтобы хранить их в mysql

я использую foreach, чтобы пробегать один из них, но я хотел бы знать, существует ли выбор пробежать два и хранить их, до настоящего времени этот es код, который я использую.

foreach($_POST["dato"] as $Dato) { 
    foreach($_POST["dato2"] as $Dato2) { 
    $INuevo = Insertar_Datos("Codigos" ,"`que`,`idcosa`,`1`,`2`" , "'test','$Id_Numero','".$Dato."','".$Dato2."' ");
}
}

случай состоит в том, что я хочу сделать цикл, который сначала читает информацию первого array, и тогда пробегает второго вводя данные второго со стоимостью первого (с этим в принципе у меня нет проблемы однажды узнайте, который они были бы переменными, которые я должен перемещать query). например давайте предполагать, что - имена и фамилии данные:

имя = 1

я называю = 1 из имени 1

я называю = 2 из имени 1

я называю = 3 из имени 1

имя = 2

я называю = 1 из имени 2

я называю = 2 из имени 2

я называю = 3 из имени 2

и я схватил до конца дней когда могут иметь только две фамилии или один.

могут или я должен делать другой foreach внутри foreach? может быть, for был лучше внутри первого foreach?

внутри функции Insertar_Datos у меня есть это:

function Insertar_Datos() { global $Conectar;
    $Parametros = func_get_args();
            $InDatos = "INSERT INTO `".$Parametros[0]."` (".$Parametros[1].") VALUES (".$Parametros[2].");";
            $RDatos = mysqli_query($Conectar, $InDatos);
            if (!$RDatos) { http_response_code(500); print(mysqli_error($Conectar)); } else { http_response_code(200); echo "ok"; }
     return $RDatos;
}

и многообразные select - нечто похожее:

<select name="dato[]" multiple="multiple">
    <option value="1">Numero 1</option>
    <option value="2">Numero 2</option>
    <option value="3">Numero 3</option>
</select>

<select name="dato2[]" multiple="multiple">
    <option value="1">Numero 1</option>
    <option value="2">Numero 2</option>
    <option value="3">Numero 3</option>
</select>

Структура серьезной таблицы немного тип это:

+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id       | int(10)     | NO   | PRI | NULL    |       |
| que      | varchar(50) | YES  |     | NULL    |       |
| idcosa   | int(10)     | YES  |     | NULL    |       |
| 1        | varchar(200)| YES  |     | NULL    |       |
| 2        | varchar(200)| YES  |     | NULL    |       |
+----------+-------------+------+-----+---------+-------+

idcosa я приношу это себе из другой таблицы и это число, чтобы идентифицировать, откуда он приходит, но это число это сохраняет хорошо.

Случай состоит в том, что по какому-то разуму как только dato2 у него есть более одной стоимости оно не функционирует, и не, который у меня есть плохо :_(

2
задан 28.12.2016, 23:51
0 ответов

Чтобы считать producto cartesiano обеих договоренностей ты мог бы использовать следующую функцию:

function cartesianProduct($sets)
{
    $cartesian = array();
    foreach ($sets as $key => $set) {

        // Si un grupo esta vació no afecta el producto cartesiano
        if (empty($set)) {
            continue;
        }

        // Si esta vacio agregamos el primer grupo
        if (empty($cartesian)) {
            $cartesian[] = array();
        }

        $subset = array();
        foreach ($cartesian as $product) {
            foreach($set as $value) {
                $product[$key] = $value;
                $subset[] = $product;
            }
        }
        $cartesian = $subset;
    }
    return $cartesian;
}

Demo

Твой код мог бы заканчиваться следующим:

$set = cartesianProduct(array('dato'=> $_POST['dato'], 'dato2'=> $_POST['dato2']));

foreach($set as $data) {
    $INuevo = Insertar_Datos("Codigos" ,"`que`,`idcosa`,`1`,`2`" , "'test','$Id_Numero','".$data['dato']."','".$data['dato2']."' ");
}
2
ответ дан 03.12.2019, 17:57
  • 1
    Я люблю тебя. Я не понимаю có я говорю, но функционируй, así что я люблю тебя < 3 –  29.12.2016, 20:30

В которое мне удается понять, ты имеешь: $_POST['datos'] и $_POST['datos2'] и ты хочешь сочетать их, чтобы пробегать их. Так как ты мог бы сочетать их с array_merge(): http://php.net/manual/es/function.array-merge.php

$array = array_merge($_POST['datos'], $_POST['datos2']);

Проверь, если оно ты функционирует, таким образом.

0
ответ дан 03.12.2019, 17:57