php - 使用了错误的阵列针
问题描述
我将尝试用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
关于这里发生了什么以及如何解决这个问题的任何想法?
解决方案
您需要对齐数组中的下标
$_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] => )
推荐阅读
- sql - 按不同列值(时间戳)的 SQL 累积平均值
- laravel - 带有承载认证的 Laravel Json 测试
- javascript - 如何从 Firebase 以及 React Native 中的数组中删除数据
- audio - FFMPEG - 多轨、多通道文件到离散单声道文件
- python - 卡住未定义的变量,但找不到任何拼写错误或其他可能导致它的原因?
- postman - 从 Postman 调用受护照推特策略保护的 Passport API 端点
- swift - SwiftUI:启动时检查用户身份验证
- swift - PHAssetResource.assetResources() 调用的内存使用问题
- objective-c - 如何使用 NSButton 中的方法扩展 NSButtonCell?
- python - 有没有一种方法可以在不使用 __iter__() 的情况下从 Tensorflow MapDataset 中获取元素?