strnatcmp
使用“自然顺序”算法进行字符串比较
使用"自然"算法来比较两个字符串(区分大小写):
<span class="token php language-php"><span class="token delimiter important"><?php</span> <span class="token keyword">echo</span> <span class="token function">strnatcmp</span><span class="token punctuation">(</span><span class="token string double-quoted-string">"2Hello world!"</span><span class="token punctuation">,</span><span class="token string double-quoted-string">"10Hello world!"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">echo</span> <span class="token string double-quoted-string">"<br>"</span><span class="token punctuation">;</span> <span class="token keyword">echo</span> <span class="token function">strnatcmp</span><span class="token punctuation">(</span><span class="token string double-quoted-string">"10Hello world!"</span><span class="token punctuation">,</span><span class="token string double-quoted-string">"2Hello world!"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token delimiter important">?></span></span>
自然算法(strnatcmp)和常规计算机字符串排序算法(strcmp)的差异:
<span class="token php language-php"><span class="token delimiter important"><?php</span> <span class="token variable">$arr1</span> <span class="token operator">=</span> <span class="token variable">$arr2</span> <span class="token operator">=</span> <span class="token keyword">array</span><span class="token punctuation">(</span><span class="token string double-quoted-string">"pic1"</span><span class="token punctuation">,</span><span class="token string double-quoted-string">"pic2"</span><span class="token punctuation">,</span><span class="token string double-quoted-string">"pic10"</span><span class="token punctuation">,</span><span class="token string double-quoted-string">"pic01"</span><span class="token punctuation">,</span><span class="token string double-quoted-string">"pic100"</span><span class="token punctuation">,</span><span class="token string double-quoted-string">"pic20"</span><span class="token punctuation">,</span><span class="token string double-quoted-string">"pic30"</span><span class="token punctuation">,</span><span class="token string double-quoted-string">"pic200"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">echo</span> <span class="token string double-quoted-string">"标准字符串比较"</span><span class="token operator">.</span><span class="token string double-quoted-string">"<br>"</span><span class="token punctuation">;</span> <span class="token function">usort</span><span class="token punctuation">(</span><span class="token variable">$arr1</span><span class="token punctuation">,</span><span class="token string double-quoted-string">"strcmp"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token function">print_r</span><span class="token punctuation">(</span><span class="token variable">$arr1</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">echo</span> <span class="token string double-quoted-string">"<br>"</span><span class="token punctuation">;</span> <span class="token keyword">echo</span> <span class="token string double-quoted-string">"自然顺序字符串比较"</span><span class="token operator">.</span><span class="token string double-quoted-string">"<br>"</span><span class="token punctuation">;</span> <span class="token function">usort</span><span class="token punctuation">(</span><span class="token variable">$arr2</span><span class="token punctuation">,</span><span class="token string double-quoted-string">"strnatcmp"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token function">print_r</span><span class="token punctuation">(</span><span class="token variable">$arr2</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token delimiter important">?></span></span>