Counts byte occurrences and can return a frequency map or filtered bytes.
What Is count_chars() in PHP?
Counts byte occurrences and can return a frequency map or filtered bytes.
Its syntax is:
count_chars(string $string, int $mode = 0): array|string
Parameters:
$string— Accepted as string; required argument.$mode— Accepted as int; optional default 0.
Return type: array|string. Counts bytes, not Unicode characters. Modes 0–2 return arrays; modes 3–4 return strings.
Availability: Core PHP.
Example 1: Basic Usage
<?php
print_r(count_chars("banana", 1));
Output:
Array
(
[97] => 3
[98] => 1
[110] => 2
)
Counts bytes, not Unicode characters. Modes 0–2 return arrays; modes 3–4 return strings.
Example 2: A Different Input
<?php
echo count_chars("abca", 3);
Output:
abc
Counts bytes, not Unicode characters. Modes 0–2 return arrays; modes 3–4 return strings.
Practical Example: Applying It in a Program
<?php
$text = "level"; $frequencies = count_chars($text, 1); foreach ($frequencies as $byte => $frequency) { echo chr($byte) . ": " . $frequency . PHP_EOL; }
Output:
e: 2
l: 2
v: 1
Counts bytes, not Unicode characters. Modes 0–2 return arrays; modes 3–4 return strings.
Important Behavior and Edge Cases
- Key behavior: Counts bytes, not Unicode characters. Modes 0–2 return arrays; modes 3–4 return strings.
- Environment: Core PHP.
Comparison With Related Functions
| Function | Purpose |
|---|---|
count_chars() | Counts byte occurrences and can return a frequency map or filtered bytes. |
substr_count() | substr_count() counts one particular substring; count_chars() counts byte occurrences across a string. |
Common Beginner Mistakes
| Mistake | Correct Approach |
|---|---|
| Ignoring this behavior: Counts bytes, not Unicode characters | Counts bytes, not Unicode characters. Modes 0–2 return arrays; modes 3–4 return strings. |
Key Takeaways
- Counts byte occurrences and can return a frequency map or filtered bytes.
- Counts bytes, not Unicode characters. Modes 0–2 return arrays; modes 3–4 return strings.
- Core PHP.
Summary: Counts bytes, not Unicode characters. Modes 0–2 return arrays; modes 3–4 return strings.