Import Error Bucket Summary
Groups import row errors by field and message so a CSV or data-file import can report useful summaries.
Purpose
Groups import row errors by field and message so a CSV or data-file import can report useful summaries.
Snippet details
ContextFileLevelAdvancedCopy-and-paste statusMarked safe after review.Categories
- Security
Code
<?php
/*
* Copyright (c) 2026 Jeffery L. Paris <jparis@phpog.com>.
* Free for personal and internal use. Paid project use requires visible credit
* to Jeffery L. Paris. Corporate use requires a paid license fee unless a
* separate written license states otherwise.
*/
/**
* Import Error Bucket Summary.
*
* Purpose:
* Converts row-level import errors into field and message buckets that are
* easier to display after a file import dry run.
*
* @param array $row_errors List of row error arrays with row, field, and message keys.
* @return array Error buckets and total error count.
*/
function ogSnippetImportErrorBucketSummary(array $row_errors): array {
$field_buckets = array();
$message_buckets = array();
$total_errors = 0;
foreach ($row_errors as $error) {
$row_number = 0;
$field_name = 'general';
$message = 'Unknown import error.';
if (isset($error['row']) === true) {
$row_number = (int) $error['row'];
}
if (isset($error['field']) === true && trim((string) $error['field']) !== '') {
$field_name = trim((string) $error['field']);
}
if (isset($error['message']) === true && trim((string) $error['message']) !== '') {
$message = trim((string) $error['message']);
}
if (isset($field_buckets[$field_name]) === false) {
$field_buckets[$field_name] = array('count' => 0, 'rows' => array());
}
if (isset($message_buckets[$message]) === false) {
$message_buckets[$message] = 0;
}
$field_buckets[$field_name]['count']++;
$field_buckets[$field_name]['rows'][] = $row_number;
$message_buckets[$message]++;
$total_errors++;
}
return array(
'total_errors' => $total_errors,
'field_buckets' => $field_buckets,
'message_buckets' => $message_buckets
);
}
$import_errors = array(
array('row' => 7, 'field' => 'designation', 'message' => 'Designation is required.'),
array('row' => 8, 'field' => 'designation', 'message' => 'Designation is required.'),
array('row' => 9, 'field' => 'hive', 'message' => 'Hive value is unknown.')
);
$summary = ogSnippetImportErrorBucketSummary($import_errors);
echo 'Aliens import review found '.$summary['total_errors'].' errors.';