Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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 如何使用以下规则确定级别_Php_Arrays_For Loop - Fatal编程技术网

Php 如何使用以下规则确定级别

Php 如何使用以下规则确定级别,php,arrays,for-loop,Php,Arrays,For Loop,我有一个数组,如下所示 $levels = array(P, P, F, F, P) (P, F, P, F, P) p表示通过,F表示失败 有五个级别,由数组索引表示 我必须使用以下规则确定级别 规则: 必须传递当前级别才能移动到下一个级别 最低通过水平应视为实际水平 在上面的例子中。实际液位应计算为2。最后一个P将被忽略,因为之前的级别未通过 在另一个示例中,如果数据如下所示 $levels = array(P, P, F, F, P) (P, F, P, F, P) 实际级别应为1

我有一个数组,如下所示

$levels = array(P, P, F, F, P)
(P, F, P, F, P)
p表示通过,F表示失败

有五个级别,由数组索引表示

我必须使用以下规则确定级别

规则:

  • 必须传递当前级别才能移动到下一个级别
  • 最低通过水平应视为实际水平
  • 在上面的例子中。实际液位应计算为2。最后一个P将被忽略,因为之前的级别未通过

    在另一个示例中,如果数据如下所示

    $levels = array(P, P, F, F, P)
    
    (P, F, P, F, P)
    
    实际级别应为1(如果数组索引从1开始)。最低通过级别

    我已经做了很多,但是代码看起来可能有点不同。我把这个问题解释为一个孤立的系统。原因是为了避免一些混乱和复杂

    $result = array();
    foreach($answers as $att=>$level){
        foreach($level as $key=>$val) {
            if (in_array("0", $val))
                $result[$att][$key] = 0;
            else
                $result[$att][$key] = 1;
        }}
    for($i=1; $i<=6; $i++){
        for($j=1; $j<=5; $j++){
            if($result[$i][$j]==1)
                $attribute.$i = $j;
            else 
                continue;
        }
    }
    
    $result=array();
    foreach($att=>$level){
    foreach($key=>$val){
    if(在_数组中(“0”,$val))
    $result[$att][$key]=0;
    其他的
    $result[$att][$key]=1;
    }}
    对于($i=1;$i请尝试以下代码:

    for($i=0; $i<count($levels); $i++){
       if($levels[$i] == "F"){
          $actual_level = $i;
          break;
       }
    }
    
    echo $actual_level;
    
    对于($i=0;$i请尝试以下代码:

    for($i=0; $i<count($levels); $i++){
       if($levels[$i] == "F"){
          $actual_level = $i;
          break;
       }
    }
    
    echo $actual_level;
    

    对于($i=0;$i请看php.net有很多数组函数,还有一个nice,它返回第一个匹配的键。由于这将是第一个“F”,您需要减去1才能得到前面的键。如果级别从1开始,则无需减去1

    即使阵列中没有“F”,这也可以工作

    $levels = array('P', 'P', 'F', 'F', 'P');
    
    $firstFailed = array_search('F', $levels);
    
    // Instead of 5 use the var holding your max level.
    echo $firstFailed ? $firstFailed : 5;
    

    看看php.net,有很多数组函数,还有一个nice,它返回第一个匹配的键。因为这将是第一个“F”,所以需要减去1才能得到前面的键。如果级别从1开始,则无需减去1

    即使阵列中没有“F”,这也可以工作

    $levels = array('P', 'P', 'F', 'F', 'P');
    
    $firstFailed = array_search('F', $levels);
    
    // Instead of 5 use the var holding your max level.
    echo $firstFailed ? $firstFailed : 5;
    

    所以,我们应该为您编写代码,对吗?我没有看到任何问号-问题是什么?那么,我们应该为您编写代码,对吗?我没有看到任何问号-问题是什么?