这是PHP菜鸟的第一篇文章。我的问题涉及一个HTML / PHP表单,它发布了由MySQL查询生成的以下三种类型的数据:
ID(始终通过隐藏的输入字段发布) 里程(只有一些条目可能完成,其他条目可能留空) 车辆类型(始终通过隐藏的输入字段发布)
此数据全部用于在数据发布页面之前的页面上选择的三家公司之一,即
第一步:选择公司和年份。按提交。
第二步:查看MySQL查询的结果,并在必要时输入里程数。按提交。
第三步:(这就是我在这里的原因)
我已经将这些数据填充到我(可能错误地)认为是一个名为$ idmilearray的多维数组中,使用以下代码:
if(isset($_POST['mileage'])) {
$mileagenumber = $_POST['mileage'];
}
if(isset($_POST['idnos'])) {
$idnumber = $_POST['idnos'];
}
if(isset($_POST['vehicle'])) {
$vehicletype = $_POST['vehicle'];
}
$idmilearray = array(
'ids' => $idnumber,
'mileage' => $mileagenumber,
'vtype' => $vehicletype
);
foreach($idmilearray as $inputs) {
$inputs = $idmilearray['ids'];
$inputs = $idmilearray['mileage'];
$inputs = $idmilearray['vtype'];
}
如果我在$ idmilearray上执行print_r,我会得到以下结果:
Array
(
[ids] => Array
(
[0] => 35
[1] => 22
[2] => 32
[3] => 38
[4] => 36
[5] => 39
[6] => 16
[7] => 20
[8] => 48
[9] => 46
)
[mileage] => Array
(
[0] => 334
[1] => 56
[2] =>
[3] => 43
[4] =>
[5] =>
[6] =>
[7] =>
[8] => 11
[9] => 5
)
[vtype] => Array
(
[0] => 10T
[1] => 10T
[2] => 10T
[3] => Artic
[4] => 10T
[5] => Artic
[6] => Artic
[7] => 10T
[8] => Artic
[9] => 10T
)
我想要做的是创建另一个数组(我可以在以后的SQL查询中使用的值),但只有在[ids] [0]中的键包含某些的地方,[里程] [0]和[vtype] [0]等等。我想用[里程]作为'参考数组'。
我一直在玩array_intersect_key和array_diff_key,但是我遇到了一个很大而且非常讨厌的墙。任何人都可以帮忙或指点一下吗?
非常感谢你的时间。
此致
外部。
答案 0 :(得分:0)
只需在现有 foreach中添加另一个foreach
,然后通过使用if (!empty($old_array)) {}
示例:
foreach($idmilearray as $inputs) {
$inputs = $idmilearray['ids'];
$inputs = $idmilearray['mileage']; // This is the one you want, right?
$inputs = $idmilearray['vtype'];
}
为了完成你需要的工作,它将是这样的:
$new_array = []; // Short array syntax (PHP 5.3+)
foreach($idmilearray as $inputs) {
$inputs = $idmilearray['ids'];
foreach($idmilearray['mileage'] as $mileage) {
if (!empty($mileage)) {
$new_array[] = $mileage;
}
}
$inputs = $idmilearray['vtype'];
}
现在你有新数组($new_array
)只填充了链接到现有值的键。
我希望它可以帮到你。
答案 1 :(得分:0)
您可以使用以下内容直接插入mysql:
foreach ( $idmilearray['mileage'] as $KEY => $VAL ) {
if ( empty($VAL) ) continue;
$query = "INSERT INTO `tableName` (id, mileage, vtype) VALUES ('{$idmilearray['ids'][$KEY]}', '$VAL', '{$idmilearray['vtype'][$KEY]}')";
}
或者,如果您真的想合并所有内容以进行进一步处理或出于任何原因,您可以这样做:
$NewArray = [];
foreach ( $idmilearray['mileage'] as $KEY => $VAL ) {
if ( empty($VAL) ) continue;
$NewArray[] = array('id' => $idmilearray['ids'][$KEY], 'mileage' => $VAL, 'vtype' => $idmilearray['vtype'][$KEY]);
}
当然还有很多其他可能的方法可以做到这一点,但考虑到你现在拥有的这些方法,这些方法最简单。