PHP-foreach返回重复条目
我有一个foreach循环,它从一个数组字符串返回重复的条目,其中没有重复项 守则:PHP-foreach返回重复条目,php,arrays,loops,foreach,Php,Arrays,Loops,Foreach,我有一个foreach循环,它从一个数组字符串返回重复的条目,其中没有重复项 守则: $a = []; $b = []; foreach($categories['results'][0]['parameters'] as $key => $value) { if(in_array($value['code'], $input_valid_names)) { if($value['type'] == '
$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];
}
}
知道为什么要这么做吗?进行了几次调试,但没有任何线索…因为当
$value['type']
对于任何if
语句都不相等时,您的代码在$param
之前的$a/$b
值中设置。试试这个:
$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];
}
}
$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];
}
}
}
因为当
$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];
}
}
}
解决了它,提出:
$param[] = [$a => $b];
在每个if验证中。
$param数组中不再有重复值。解决了此问题,将:
$param[] = [$a => $b];
在每个if验证中。
$param数组中不再有重复值。能否显示变量转储($param[])的结果。?(您可以编辑您的问题)请提供一些样本数据,尽管两者之间存在差异,您可以检查我知道差异,但这里没有不匹配,这里清楚地知道我们正在匹配
string
和string
@Exterminator顺便说一句,当您对该帖子发表评论时,我正在阅读同一篇帖子,您可以显示var\u dump的结果吗($param[])
?(您可以编辑您的问题)请提供一些样本数据,尽管两者之间存在差异,您可以检查我知道差异,但这里没有不匹配,这里清楚地知道我们正在匹配字符串和字符串@Exterminator顺便说一句,当您对该帖子发表评论时,我正在阅读同一篇帖子,我认为不会有任何变化,因为>value['type']=='input'
和value['type']=='input'
都是TRUE
我认为不会有任何变化,因为value['type']=='input'
和value['type']=='input'
两者都是TRUE
您没有必要复制代码。检查此项并复制此解决方案:嗨,Andre,Dmytro似乎回答了您的问题。如果是这样,您可以删除您的答案并接受他的答案。非常感谢…正确答案已检查:)您没有必要复制代码。检查此项并复制此解决方案:嗨,Andre,看来Dmytro回答了您的问题。如果是这样的话,你可以删除你的答案并接受他的答案。非常感谢。。。正确答案勾选:)