<?php
class RateLimiter {
private $capacity;
private $queue = [];
private $lock = [];
public function __construct(int $capacity) {
$this->capacity = $capacity;
}
public function acquire(): bool {
$this->lock[$this->getulatedKey()] = true; // Acquire lock
if (count($this->queue) < $this->capacity) {
$this->queue[] = $this->getulatedKey();
return true;
}
return false; // Rate limit exceeded
}
private function getulatedKey(): string {
return uniqid(); // Generate a unique key
}
}
function flattenArray(array $array): array {
$flattened = [];
$queue = [$array]; // Use a queue for depth-first traversal
while (!empty($queue)) {
$current = array_shift($queue); // Dequeue
if (is_array($current)) {
foreach ($current as $value) {
$queue[] = $value; // Enqueue array elements
}
} else {
$flattened[] = $current; // Add non-array elements to the result
}
}
return $flattened;
}
//Example Usage
$data = [
'a' => 1,
'b' => [
'c' => 2,
'd' => [
'e' => 3,
],
],
'f' => 4,
];
$flattenedData = flattenArray($data);
//Rate Limiting Example
$rateLimiter = new RateLimiter(5); // Allow 5 requests
for ($i = 0; $i < 10; $i++) {
if ($rateLimiter->acquire()) {
// Process request
echo "Processing request " . ($i + 1) . "\n";
} else {
echo "Rate limit exceeded for request " . ($i + 1) . "\n";
}
sleep(0.2); //Simulate work being done
}
?>
Add your comment