我有一个foreach循环,它从数组字符串中返回重复项,而其中没有重复项。
代码:
$a = [];
$b = [];
foreach($categories['results'][0]['parameters'] as $key => $value) {
if(in_array($value['code'], $input_valid_names)) {
if($value['type'] == 'input') {
$a = $value['code'];
$b = $PostData[$value['code']];
}
if($value['type'] == 'select'){
$a = $value['code'];
$b = $PostData[$value['code']];
}
if($value['type'] == 'checkbox' && !empty($PostData[$value['code']])){
$a = $value['code'];
$b = 'Sim';
}
$param[] = [$a => $b];
}
}
有人知道为什么要这么做吗?进行了几次调试,但没有任何提示...
答案 0 :(得分:2)
因为如果$value['type']
对于任何if
语句而言都不相等,则您的代码将设置为$param
之前的$a/$b
值。试试这个:
$param = [];
foreach($categories['results'][0]['parameters'] as $key => $value) {
$a = false;
$b = false;
if(in_array($value['code'], $input_valid_names)) {
if($value['type'] == 'input') {
$a = $value['code'];
$b = $PostData[$value['code']];
}
if($value['type'] == 'select'){
$a = $value['code'];
$b = $PostData[$value['code']];
}
if($value['type'] == 'checkbox' && !empty($PostData[$value['code']])){
$a = $value['code'];
$b = 'Sim';
}
if($a and $b){
$param[] = [$a => $b];
}
}
}
答案 1 :(得分:0)
$a = '';
$b = '';
$param = array();
foreach ($categories['results'][0]['parameters'] as $key => $value) {
if (in_array($value['code'], $input_valid_names)) {
if ($value['type'] === 'input') {
$a = $value['code'];
$b = $PostData[$value['code']];
}else if ($value['type'] === 'select') {
$a = $value['code'];
$b = $PostData[$value['code']];
}else if ($value['type'] === 'checkbox' && !empty($PostData[$value['code']])) {
$a = $value['code'];
$b = 'Sim';
}
$param[] = [$a => $b];
}
}
答案 2 :(得分:0)
解决了问题,放入:
$param[] = [$a => $b];
在所有if验证内。 $ param数组中不再有重复的值。