我有一个表单,通过foreach
注册五台机器的值。
然后检查结尾是否具有文本字段的名称,并根据模式的比较将其分配给相应的变量:
要正确保存值,请删除每个键的_1 _2 _3 _4 _5
这是函数
function registerMachines(){
foreach($_POST as $item => $value){
if(preg_match('/_1/', $item)){
$item = explode("_", $item);
$item = $item[0];
$data_1[$item] = $value;
} elseif(preg_match('/_2/', $item)){
$item = explode("_", $item);
$item = $item[0];
$data_2[$item] = $value;
} elseif(preg_match('/_3/', $item)){
$item = explode("_", $item);
$item = $item[0];
$data_3[$item] = $value;
} elseif(preg_match('/_4/', $item)){
$item = explode("_", $item);
$item = $item[0];
$data_4[$item] = $value;
} elseif(preg_match('/_5/', $item)){
$item = explode("_", $item);
$item = $item[0];
$data_5[$item] = $value;
} else {
$configData[$item] = $value;
}
}
}
我希望循环每个值而不为每个数据集分配data_number变量。
我接触到这个功能:
$machines = [1, 2, 3, 4, 5];
foreach($_POST as $item => $value){
foreach($machines as $machine) {
$match = '/_'.$machine.'$/';
if(preg_match($match, $item)){
$item = explode("_", $item);
$item = $item[0];
${"machineData_".$machine}[$item] = $value;
} else {
$configData[$item] = $value;
}
}
}
它是如何运作的?
我浏览了$ _POST的所有值。
我在内部扫描每台机器($ machine)。
我根据循环的值创建要检查的模式。
如果匹配,我将消除$ item的结尾(_1,_2,_3等)。
我使用语法$ {var创建变量(数组)。 $ Machine}并为其指定值。
问题:
当我浏览机器的50个输入时,会重复5个路径以生成变量,因此会出现var_dump 250
个值。
我想要什么?
我希望能够查看每个POST值,为此,将检查所有计算机并将其值分配给正确的值(使用$ {var}生成的数组)
答案 0 :(得分:1)
你应该遍历第一个数组的每个迭代
foreach($numbers as $number){
foreach($letters as $letter){
$data[$number] = $letter;
}
}
答案 1 :(得分:1)
你可以使用两个foreach
foreach ($numbers as $key => $value) {
foreach ($letters as $keylet => $valuelet) {
$data[$value] = $valuelet;
}
}