我有以下代码:我知道这可能都是错的,但是我以前没有处理过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>';
显然是哪里出了问题,请帮忙好吗?
如果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>';
}
$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>';
}
对于多行循环,需要大括号。同时,将数组声明移出循环
你可以把它变成…
$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)非常有用。
我可能会写得有点不同这是不正确的($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>';
}