Here are some PHP code challenges ranging from beginner to intermediate levels:
String Manipulation Challenge:
// Write a function that:
// - Takes a string
// - Removes all vowels
// - Returns the modified string
function removeVowels($str) {
return preg_replace('/[aeiou]/i', '', $str);
}
// Test case
echo removeVowels("hello world"); // Output: "hll wrld"
Array Manipulation Challenge:
// Write a function that:
// - Takes an array of numbers
// - Returns only the unique numbers
// - Preserves the original order
function getUniqueNumbers($arr) {
return array_values(array_unique($arr));
}
// Test case
$numbers = [1, 2, 2, 3, 4, 4, 5];
print_r(getUniqueNumbers($numbers)); // Output: [1, 2, 3, 4, 5]
Prime Number Checker:
function isPrime($num) {
if ($num <= 1) return false;
for ($i = 2; $i <= sqrt($num); $i++) {
if ($num % $i == 0) return false;
}
return true;
}
// Test cases
echo isPrime(7); // Output: true
echo isPrime(10); // Output: false
Reverse Words Challenge:
function reverseWords($sentence) {
$words = explode(' ', $sentence);
$reversedWords = array_map('strrev', $words);
return implode(' ', $reversedWords);
}
// Test case
echo reverseWords("Hello World PHP");
// Output: "olleH dlroW PHP"
Palindrome Checker:
function isPalindrome($str) {
$cleanStr = strtolower(preg_replace('/[^a-z0-9]/', '', $str));
return $cleanStr === strrev($cleanStr);
}
// Test cases
echo isPalindrome("A man, a plan, a canal: Panama"); // Output: true
echo isPalindrome("race a car"); // Output: false
Fibonacci Sequence Generator:
function generateFibonacci($n) {
$fibonacci = [0, 1];
for ($i = 2; $i < $n; $i++) {
$fibonacci[] = $fibonacci[$i-1] + $fibonacci[$i-2];
}
return $fibonacci;
}
// Test case
print_r(generateFibonacci(10));
// Output: Array of first 10 Fibonacci numbers
Object-Oriented Challenge:
class ShoppingCart {
private $items = [];
public function addItem($name, $price) {
$this->items[$name] = $price;
}
public function removeItem($name) {
unset($this->items[$name]);
}
public function getTotalPrice() {
return array_sum($this->items);
}
}
// Test usage
$cart = new ShoppingCart();
$cart->addItem('Apple', 0.5);
$cart->addItem('Banana', 0.3);
echo $cart->getTotalPrice(); // Output: 0.8
Regular Expression Challenge:
function validateEmail($email) {
return preg_match('/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/', $email);
}
// Test cases
echo validateEmail("test@example.com"); // Output: 1 (true)
echo validateEmail("invalid-email"); // Output: 0 (false)
Date Manipulation:
function daysBetweenDates($date1, $date2) {
$datetime1 = new DateTime($date1);
$datetime2 = new DateTime($date2);
$interval = $datetime1->diff($datetime2);
return $interval->days;
}
// Test case
echo daysBetweenDates('2023-01-01', '2023-12-31');
// Output: Number of days between dates
Nested Array Flattening:
function flattenArray($arr) {
$result = [];
array_walk_recursive($arr, function($a) use (&$result) { $result[] = $a; });
return $result;
}
// Test case
$nestedArray = [1, [2, 3], [4, [5, 6]]];
print_r(flattenArray($nestedArray));
// Output: [1, 2, 3, 4, 5, 6]
Bonus Challenge Levels:
Beginner: Solve the function
Intermediate: Add error handling
Advanced: Optimize for performance
Recommended Learning Path:
Understand the problem
Write a basic solution
Test with different inputs
Add error handling
Optimize if possible
Tips:
Use var_dump() or print_r() for debugging
Write unit tests
Consider edge cases
Practice regularly
Comments
Post a Comment