在PHP 中, ord()函數可以返回一個字符的ASCII 值,而array_map()函數則可以用來對數組中的每一個元素應用一個回調函數。當我們需要批量處理字符串中的每個字符並獲取它們的ASCII 值時,可以結合使用這兩個函數。本文將詳細介紹如何實現這一功能。
ord()是PHP 中的一個內置函數,它返回一個字符的ASCII 值。例如:
<span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">ord</span></span><span>(</span><span><span class="hljs-string">'A'</span></span><span>); </span><span><span class="hljs-comment">// 輸出 65</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">ord</span></span><span>(</span><span><span class="hljs-string">'a'</span></span><span>); </span><span><span class="hljs-comment">// 輸出 97</span></span><span>
</span></span>
此函數接受一個字符作為參數,並返回該字符的ASCII 值。對於大寫字母、數字、小寫字母等常見字符, ord()都能正確返回對應的ASCII 數值。
array_map()是PHP 中的一個數組函數,允許你將一個回調函數應用於數組中的每一個元素,返回處理後的新數組。例如:
<span><span><span class="hljs-variable">$array</span></span><span> = [</span><span><span class="hljs-number">1</span></span><span>, </span><span><span class="hljs-number">2</span></span><span>, </span><span><span class="hljs-number">3</span></span><span>];
</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_map</span></span><span>(function(</span><span><span class="hljs-variable">$item</span></span><span>) {
</span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-variable">$item</span></span><span> * </span><span><span class="hljs-number">2</span></span><span>;
}, </span><span><span class="hljs-variable">$array</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$result</span></span><span>); </span><span><span class="hljs-comment">// 輸出 [2, 4, 6]</span></span><span>
</span></span>
在上面的例子中, array_map()會對數組$array中的每個元素應用一個回調函數,將每個元素乘以2。返回的結果是處理後的新數組。
現在,我們可以將這兩個函數結合起來,批量獲取一個字符串中每個字符的ASCII 值。首先,我們將字符串轉化為數組,然後使用array_map()對每個字符應用ord()函數。
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// 原始字符串</span></span><span>
</span><span><span class="hljs-variable">$str</span></span><span> = </span><span><span class="hljs-string">"Hello World"</span></span><span>;
</span><span><span class="hljs-comment">// 將字符串轉換為字符數組</span></span><span>
</span><span><span class="hljs-variable">$charArray</span></span><span> = </span><span><span class="hljs-title function_ invoke__">str_split</span></span><span>(</span><span><span class="hljs-variable">$str</span></span><span>);
</span><span><span class="hljs-comment">// 使用 array_map 批量獲取 ASCII 值</span></span><span>
</span><span><span class="hljs-variable">$asciiValues</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_map</span></span><span>(</span><span><span class="hljs-string">'ord'</span></span><span>, </span><span><span class="hljs-variable">$charArray</span></span><span>);
</span><span><span class="hljs-comment">// 輸出结果</span></span><span>
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$asciiValues</span></span><span>);
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
str_split($str) :首先,將字符串$str分割成一個字符數組。例如,"Hello World" 會被分割成['H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd'] 。
array_map('ord', $charArray) :接著, array_map()會將ord()函數應用到每個字符上,從而返回每個字符的ASCII 值。例如,字符'H'會被轉換成72 ,字符'e'會被轉換成101 ,依此類推。
print_r($asciiValues) :最後,我們打印出ASCII 值數組,結果將會是一個整數數組,表示字符串中每個字符的ASCII 值。
<span><span><span class="hljs-title function_ invoke__">Array</span></span><span>
(
[</span><span><span class="hljs-number">0</span></span><span>] => </span><span><span class="hljs-number">72</span></span><span>
[</span><span><span class="hljs-number">1</span></span><span>] => </span><span><span class="hljs-number">101</span></span><span>
[</span><span><span class="hljs-number">2</span></span><span>] => </span><span><span class="hljs-number">108</span></span><span>
[</span><span><span class="hljs-number">3</span></span><span>] => </span><span><span class="hljs-number">108</span></span><span>
[</span><span><span class="hljs-number">4</span></span><span>] => </span><span><span class="hljs-number">111</span></span><span>
[</span><span><span class="hljs-number">5</span></span><span>] => </span><span><span class="hljs-number">32</span></span><span>
[</span><span><span class="hljs-number">6</span></span><span>] => </span><span><span class="hljs-number">87</span></span><span>
[</span><span><span class="hljs-number">7</span></span><span>] => </span><span><span class="hljs-number">111</span></span><span>
[</span><span><span class="hljs-number">8</span></span><span>] => </span><span><span class="hljs-number">114</span></span><span>
[</span><span><span class="hljs-number">9</span></span><span>] => </span><span><span class="hljs-number">108</span></span><span>
[</span><span><span class="hljs-number">10</span></span><span>] => </span><span><span class="hljs-number">100</span></span><span>
)
</span></span>
從結果中可以看到,每個字符的ASCII 值已經成功地被提取出來。
結合使用ord()和array_map()函數,我們能夠輕鬆地批量獲取字符串中每個字符的ASCII 值。通過str_split()將字符串拆分為字符數組,再通過array_map()逐個字符地應用ord()函數,就能獲取到完整的ASCII 值數組。這種方法不僅簡潔而且高效,適合在需要批量處理字符的場景下使用。
相關標籤:
array_map