首页 > 解决方案 > 使用了错误的阵列针

问题描述

我将尝试用multidimensional array.

这是我的表格(部分)

<?php
    echo'
      <tr>
        <td>
            <div class="form-group" id="calc_norm_id_nr_div['.$y.'][]">
    
                    <select class="form-control no-border input-sm" id="calc_norm_id['.$y.'][]" name="calc_norm_id['.$y.'][]" multiple="multiple" size="12" style="overflow-y: auto;">';
    
                        $norm_id_arr = explode(',', $row_table_2['norm_id']);
    
                        foreach ($rows_nrm as $row_nrm)
                        {
                            echo '<option ';if(in_array($row_nrm['id'], $norm_id_arr)) { echo 'selected="selected"';} echo 'value="'.$row_nrm['id'].'">'.$row_nrm['norm'].' '.$row_nrm['omschrijving'].'</option>';
                        }
                        echo '
                    </select>
    
                <span class="" id="calc_norm_id_nr_glyp['.$y.'][]"></span>
            </div>
        </td>
        <td>
            <div class="form-group" id="calc_prijs_div['.$y.'][]">
                <input type="number" step="0.01" class="form-control no-border input-sm" id="calc_prijs['.$y.'][]" name="calc_prijs[]" value="'.$row_table_2['prijs'].'" style="text-align: right" onkeyup="validate(this, '.$y.')">
                <span class="" id="calc_prijs_glyp['.$y.'][]"></span>
            </div>
        </td>
      </tr>';
?>

表格发送没有任何问题,print_r($_POST)并按预期给出:

$_POST Array ( [calc_norm_id] => Array ( [1] => Array ( [0] => 8 [1] => 3 [2] => 2 ) [2] => Array ( [0] => 1 [1] => 4 [2] => 5 ) ) [calc_prijs] => Array ( [0] => 454.00 [1] => 740.00 [2] => [3] => [4] => [5] => [6] => ) )

其他检查是print_r($_POST['calc_norm_id']print_r($_POST['calc_prijs']

$_POST[calc_norm_id] Array ( [1] => Array ( [0] => 8 [1] => 3 [2] => 2 ) [2] => Array ( [0] => 1 [1] => 4 [2] => 5 ) )
$_POST[calc_prijs] Array ( [0] => 454.00 [1] => 740.00 [2] => [3] => [4] => [5] => [6] => )

还是按预期进行。

下一步是循环Array发送到数据库:

foreach($_POST['calc_prijs'] as $key=>$value)
{
$calc_prijs = trim(mysqli_real_escape_string($mysqli, $_POST['calc_prijs'][$key]));
if(is_array($_POST['calc_norm_id'][$key])) { $calc_norm_id = trim(mysqli_real_escape_string($mysqli, implode(',', $_POST['calc_norm_id'][$key]))); }
}

但是当我检查$calc_norm_id&$calc_prijs现在我发现内容不匹配。我期待:

$calc_norm_id = 8,3,2
$calc_prijs = 454.00

$calc_norm_id = 1,4,5
$calc_prijs = 740.00

但我得到:

$calc_norm_id = 
$calc_prijs = 454.00

$calc_norm_id = 8,3,2
$calc_prijs = 740.00

关于这里发生了什么以及如何解决这个问题的任何想法?

标签: phparrays

解决方案


您需要对齐数组中的下标

$_POST[calc_norm_id] Array ( **[1]** => Array

$_POST[calc_norm_id] Array ( **[0]** => Array

$_POST[calc_norm_id] Array ( [0] => Array ( [0] => 8 [1] => 3 [2] => 2 ) [1] => Array ( [0] => 1 [1] => 4 [2] => 5 ) )
$_POST[calc_prijs] Array ( [0] => 454.00 [1] => 740.00 [2] => [3] => [4] => [5] => [6] => )

推荐阅读