我有以下代码..我知道它可能都错了,但我之前没有处理过foreach循环。
$last_names = regapiGetLastNames( NULL, -1 );
foreach ($last_names as $name => $last_name_id)
$exclude = array('11196','11195','11198','11197');
if(!in_array($name->last_name_id, $exclude)):
print '<option value="'.$last_name_id.'">'.$name.'</option>';
显然它在某个地方出了问题,有什么帮助吗?
答案 0 :(得分:2)
$last_names = regapiGetLastNames( NULL, -1 );
$exclude = array('11196','11195','11198','11197');
foreach ($last_names as $name => $last_name_id)
{
if(!in_array($name->last_name_id, $exclude))
print '<option value="'.$last_name_id.'">'.$name.'</option>';
}
您需要多线循环的大括号。另外,在循环外移动数组声明
答案 1 :(得分:2)
如果ID是数组值,那么您也可以使用array_diff
来过滤它们:
$last_names = regapiGetLastNames( NULL, -1 );
$exclude = array('11196','11195','11198','11197');
$last_names = array_diff($last_names, $exclude);
foreach ($last_names as $name => $last_name_id) {
print '<option value="'.$last_name_id.'">'.$name.'</option>';
}
答案 2 :(得分:0)
你可以把它变成......
$last_names = regapiGetLastNames( NULL, -1 );
$last_names = array_filter($last_names, function($value) {
return in_array($value, array('11196','11195','11198','11197'));
});
foreach ($last_names as $name => $last_name_id) {
print '<option value="'.$last_name_id.'">'.$name.'</option>';
}
当你开始循环时,你只是迭代你想要的集合。这对于分离业务规则(删除某些ID)和表示(回显HTML)非常有用。
答案 3 :(得分:0)
我可能会写一点不同,这是不正确的($ name不是对象)
$name->last_name_id
有些事情:
$last_names = regapiGetLastNames( NULL, -1 );
$exclude = array('11196','11195','11198','11197');
foreach ($last_names as $name => $last_name_id) {
if(!in_array($last_name_id, $exclude)) print '<option value="'.$last_name_id.'">'.$name.'</option>';
}