【问题标题】:How to save multiple results in the array with for loop php如何使用for循环php将多个结果保存在数组中
【发布时间】:2020-03-22 07:58:54
【问题描述】:

我正在处理一个 CSV 文件。当用户上传文件时。我解析 CSV,然后从我需要的数组中选择数据。之后,我运行for loop 来验证该数据并将结果保存在数组中。但问题是当我打印结果数组时,只有 1 封电子邮件的结果,并且有 4 封电子邮件。有什么建议吗?

$results = [];
$valid_emails = 0;
$invalid_emails = 0;

for ($i = 0; $i < $csv_array['row_count']; $i++) {
  $email = $csv_array['data'][$i][$email_column];

  $result = validate_email($email);
  $results['Email'] = $email;

  if ($result) {            
    $results['Result'] = 'valid';
    $valid_emails++;
  } else {
    $results['Result'] = 'invalid';
    $invalid_emails++;
  }

}

echo '<pre>';
print_r($results);
echo '</pre><br>';

echo $valid_emails . '<br>';
echo $invalid_emails . '<br>';

【问题讨论】:

    标签: php loops for-loop


    【解决方案1】:

    使用$results[] 添加一个或多个元素:

    $results        = [];
    $valid_emails   = 0;
    $invalid_emails = 0;
    
    for ($i = 0; $i < $csv_array['row_count']; $i++) {
        $email = $csv_array['data'][$i][$email_column];
    
        $result       = validate_email($email);
        $res['Email'] = $email;
    
        if ($result) {
            $res['Result'] = 'valid';
            $valid_emails++;
        } else {
            $res['Result'] = 'invalid';
            $invalid_emails++;
        }
    
        $results[] = $res;
    }
    
    echo '<pre>';
    print_r($results);
    echo '</pre><br>';
    
    echo $valid_emails . '<br>';
    echo $invalid_emails . '<br>';
    

    【讨论】:

      【解决方案2】:

      您每次在循环中都会覆盖结果,试试这个

      $results = [];
      $valid_emails = 0;
      $invalid_emails = 0;
      
      for ($i = 0; $i < $csv_array['row_count']; $i++) {
        $email = $csv_array['data'][$i][$email_column];
      $rowResult=[];
        $result = validate_email($email);
      $rowResult['Email'] = $email;
      
      
        if ($result) {            
          $rowResult['Result'] = 'valid';
          $valid_emails++;
        } else {
          $rowResult['Result'] = 'invalid';
          $invalid_emails++;
        }
      $results[]=$rowResult;
      
      }
      
      echo '<pre>';
      print_r($results);
      echo '</pre><br>';
      
      echo $valid_emails . '<br>';
      echo $invalid_emails . '<br>';
      

      【讨论】:

        【解决方案3】:

        $results 仅包含最后的电子邮件验证。 您应该存储多个结果,而不仅仅是最后一个 ;-)

        类似:

          $results[$i]['Email'] = $email;
        
          if ($result) {            
            $results[$i]['Result'] = 'valid';
            $valid_emails++;
          } else {
            $results[$i]['Result'] = 'invalid';
            $invalid_emails++;
          }
        
          if ($result) {            
            $results[$i] = 'valid';
            $valid_emails++;
          } else {
            $results[$i] = 'invalid';
            $invalid_emails++;
          }
        
        

        【讨论】:

          猜你喜欢
          • 2019-10-10
          • 2022-01-20
          • 2022-08-03
          • 1970-01-01
          • 2021-03-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-01-15
          相关资源
          最近更新 更多