Php 从foreach循环中排除值
我有以下代码。。我知道这可能都错了,但我以前从未处理过foreach循环Php 从foreach循环中排除值,php,foreach,Php,Foreach,我有以下代码。。我知道这可能都错了,但我以前从未处理过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)): prin
$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>';
$last_names=regapietlastnames(NULL,-1);
foreach($name=>$last\u name\u id)
$exclude=数组('11196'、'11195'、'11198'、'11197');
如果(!在数组中($name->last\u name\u id,$exclude)):
打印“.$name.”;
很明显,哪里出了问题,有什么帮助吗?你可以把它变成
$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>';
}
$last_names=regapietlastnames(NULL,-1);
$last\u names=array\u filter($last\u names,function($value){
以数组形式返回($value,数组('11196','11195','11198','11197');
});
foreach($name=>$last\u name\u id){
打印“.$name.”;
}
当你开始做循环时,你只是在你想要的集合上迭代。这对于分离业务规则(删除某些ID)和表示(回显HTML)非常有用。$last\u names=regapiGetLastNames(NULL,-1);
$exclude=数组('11196'、'11195'、'11198'、'11197');
foreach($name=>$last\u name\u id)
{
如果(!在数组中($name->last\u name\u id,$exclude))
打印“.$name.”;
}
多行循环需要大括号。另外,将数组声明移到循环之外我可能会写一些不同的东西这是不正确的($name不是对象) 大致如下:
$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>';
}
$last_names=regapietlastnames(NULL,-1);
$exclude=数组('11196'、'11195'、'11198'、'11197');
foreach($name=>$last\u name\u id){
如果(!in_数组($last_name_id,$exclude))打印“.$name.”;
}
如果ID是数组值,则还可以使用来过滤它们:
$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=regapietlastnames(NULL,-1);
$exclude=数组('11196'、'11195'、'11198'、'11197');
$last\u names=array\u diff($last\u names,$exclude);
foreach($name=>$last\u name\u id){
打印“.$name.”;
}
将此内容放在您的页面上,并将结果发布在此处$last_names=regapiGetLastNames(NULL,-1);打印(姓氏);这个解决方案看起来很可靠,虽然没有{}的单行ifs在imo中是不好的做法。另外,$name=>$last\u name\u id看起来您可以直接调用$last\u name\u id,但是由于您使用了$name->last\u name\u id,我认为您是有意这样做的。也许$name是一个对象。我不知道。是的,你可以辩论任何非{}的问题,我认为最后这总是一种糟糕的做法。我只是想展示一下他会如何使用它,因为他的原作没有大括号。这并不排除名字。。它们仍然会出现在“选择”菜单中。
$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>';
}
$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>';
}