Как сохранить несколько результатов в массиве для l oop php - PullRequest
0 голосов
/ 22 марта 2020

Я работаю с файлом CSV. когда пользователь загружает файл. Я анализирую CSV и выбираю данные из массива, который мне нужен. после этого я запускаю for loop для проверки этих данных и сохранения результатов в массиве. но проблема в том, что когда я печатаю массив результатов, результат только для 1 письма и 4 писем. какие-либо предложения?

<code>$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 '

'; echo $ valid_emails. '
'; echo $ invalid_emails. '
';

Ответы [ 3 ]

1 голос
/ 22 марта 2020

Используйте $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 '';
print_r($results);
echo '

'; echo $ valid_emails. '
'; echo $ invalid_emails. '
';
0 голосов
/ 22 марта 2020

Вы переопределяете результаты каждый раз в вашем l oop, попробуйте это

<code>$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 '

'; echo $ valid_emails. '
'; echo $ invalid_emails. '
';
0 голосов
/ 22 марта 2020

$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++;
  }

...