Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从foreach循环中排除值_Php_Foreach - Fatal编程技术网

Php 从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

我有以下代码。。我知道这可能都错了,但我以前从未处理过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>';
$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>';
}