<?php
/**
* Flags anomalies in CLI arguments.
*
* @param array $args Array of command-line arguments.
* @param array $expected_types Associative array of argument names and expected data types.
* @param array $expected_values Associative array of argument names and expected values.
* @return array Array of flagged anomalies.
*/
function flagArgumentAnomalies(array $args, array $expected_types, array $expected_values): array
{
$anomalies = [];
foreach ($expected_types as $arg_name => $expected_type) {
if (!isset($args[$arg_name])) {
$anomalies[] = "Missing argument: {$arg_name}";
continue; // Skip to the next argument
}
$arg_value = $args[$arg_name];
if (is_array($expected_type)) {
//Allow multiple expected values
if(!in_array($arg_value, $expected_type)){
$anomalies[] = "Argument {$arg_name} has unexpected value: {$arg_value}. Expected: " . implode(", ", $expected_type);
}
} else {
if (!is_scalar($arg_value)) {
$anomalies[] = "Argument {$arg_name} has incorrect type. Expected: {$expected_type}, Actual: " . gettype($arg_value);
} elseif ($arg_value !== $expected_values[$arg_name]) {
$anomalies[] = "Argument {$arg_name} has incorrect value. Expected: {$expected_values[$arg_name]}, Actual: {$arg_value}";
}
}
}
return $anomalies;
}
// Example usage (for testing)
/*
$args = ['name' => 'John Doe', 'age' => 30, 'city' => 'New York'];
$expected_types = ['name' => 'string', 'age' => 'int', 'city' => 'string'];
$expected_values = ['name' => 'John Doe', 'age' => 30, 'city' => 'New York'];
$anomalies = flagArgumentAnomalies($args, $expected_types, $expected_values);
if (!empty($anomalies)) {
echo "Anomalies found:\n";
foreach ($anomalies as $anomaly) {
echo "- " . $anomaly . "\n";
}
} else {
echo "No anomalies found.\n";
}
*/
?>
Add your comment