无法按键获取关联数组值

时间:2018-05-16 19:33:29

标签: php html arrays echo associative-array

我有2页,第一页是获得1 - 5星评级。

第二个是查看所提出的问题的统计数据,以便我们可以看到人们如何选择Star 1,有多少人选择了Star 2等。

在人们点击提交的第一页上,我的PHP会创建一个与每个问题(问题1,问题2等)对应的文本文件,该文件将存储该评级为1 - 5的评级值

在我遇到问题的第二页上,我能够将文本文件中的值作为关联数组获取:

-var_dump -

array(3) { ["2 "]=> int(1) ["5 "]=> int(2) ["3 "]=> int(1) }

的print_r

Array ( [2 ] => 1 [5 ] => 2 [3 ] => 1 )

[" 2"],[" 5"]和[" 3"]是我文字中的评分文件,int()是在我的文本文件中计算评分的时间,以及我如何获得每个问题点击评分的人数。

我尝试做的是当我用例如键[" 2"]回显数组时,显示整数!但是每当我尝试这样做时,我都会收到错误或者什么也得不到,我得到的最常见的错误是:

  

注意:未定义的偏移量:D在第101行的D:\ Xampp \ htdocs \ ECwebpages \ Survey-Stats \ Survey-Stats.php中   NULL

如果您需要更多信息,请告诉我。我将在下面提供代码!

 <?php

          $counter = 1; 

          if (file_exists("../Question1.txt") && file_exists("../Question10.txt")){



              $files = "../Question1.txt";


              $lines=file($files);

              $vals = array_count_values($lines);

              foreach($vals as $answers => $keyss ){}

              var_dump($vals["2 "]);



              foreach($lines as $linescntnt => $key){


                  if($key == 1){
                      //count how many poeple click on star 1 and place here 

                      if($answers == '1'){
                          //display how many people clicked on the First rating
                          echo  "<td>".$vals."</td>";
                      }else{
                          echo "<td>-<td>";
                      }
                  }

                  if ($key == 2){
                      //count how many poeple click on star 1 and place here 
                      if($answers == '2'){
                            //display how many people clicked on the Second rating
                          echo  "<td>-</td>";
                      }else{
                          echo "<td>-<td>";
                      }

                  }


                  if($key == 3){
                      //count how many poeple click on star 1 and place here 
                       if($answers == '3'){
                             //display how many people clicked on the Third rating
                        echo  "<td>".$answers."</td>";
                      }else{
                          echo "<td>-<td>";
                      }
                  }
                  if($key == 4){
                      //count how many poeple click on star 1 and place here 
                       if($answers == '4'){
                             //display how many people clicked on the Fourth rating
                        echo  "<td>".$answers."</td>";
                      }else{
                          echo "<td>-<td>";
                      }
                  }
                  if($key == 5){
                      //count how many poeple click on star 1 and place here 
                       if($answers == '5'){
                             //display how many people clicked on the Fifth rating
                        echo  "<td>".$answers."</td>";
                      }else{
                          echo "<td>-<td>";
                      }
                  }


              }
          }



    ?>

1 个答案:

答案 0 :(得分:1)

经过一段时间的反复试验后,我终于能够完成这项工作,@ Malovich在评论中解释说(“当你构建数组时删除空格或转换为数值。”),所以我trim()我的文件$lines

$files = "../Question1.txt";

$lines=file($files);

 --trim-->   $trimmed_array=array_map('trim',$lines); <--

然后我继续并做了我的计算:

$vals = array_count_values($trimmed_array);

最后为了从key获取我的值,以显示我点击了特定明星的人数:

 if(isset($vals[1])){

    echo "<td>".$vals[1]."</td>";

 }else{

       echo "<td>0</td>";

  }

$ vals是数组,键([1],[2]等)是获取我使用array_count_values()时创建的整数。

   if (file_exists("../Question1.txt") && file_exists("../Question10.txt")){
   
   $files = "../Question2.txt";
   
   $lines=(file($files));
   
   $trimmed_array=array_map('trim',$lines);
   
   $vals = array_count_values($trimmed_array);
   
   foreach($vals as $answers => $keys){

    }

    if(isset($vals[1])){

      echo "<td>".$vals[1]."</td>";

    }else{
      echo "<td>0</td>";
    }

    if(isset($vals[2])){

    echo "<td>".$vals[2]."</td>";

    }else{
    echo "<td>0</td>";
    }

    etc...
  
  }else {
  
    echo ' <td>-</td><td>-</td><td>-</td><td>-</td><td>-</td>';
    
}