输入名称:DEVO AVIDIANTO PRATAMA 输出:DAP 如果输入的三个单词出现DAP
输入名称:AULIA ABRAR 输出:AAB 如果输入两个单词,则显示AAB
输入名称:AULIA 输出:AUL 如果输入一个单词,则显示为AUL
<?php
$nama = $_POST['nama'];
$arr = explode(" ", $nama);
//var_dump($arr);die;
$jum_kata = count($arr);
//echo $jum_kata;die;
$singkatan = "";
if($jum_kata == 1){
//print_r($arr);
foreach($arr as $kata)
{
echo substr($kata, 0,3);
}
}else if($jum_kata == 2) {
foreach ($arr as $kata) {
echo substr($kata,0,2);
}
}else {
foreach ($arr as $kata) {
echo substr($kata,0,1);
}
}
?>
如何更正此代码:
else if($jum_kata == 2) {
foreach ($arr as $kata) {
echo substr($kata,0,2);
}
要打印AAB吗?
答案 0 :(得分:3)
作为另一种方法的变体。将每一个下一个字符串放在上一个字符串上,并移动一个步骤。然后切片结果字符串的开头
function initials($str, $length=3) {
$string = '';
foreach(explode(' ', $str) as $k=>$v) {
$string = substr($string, 0, $k) . $v;
}
return substr($string, 0, $length);
}
echo initials('DEVO AVIDIANTO PRATAMA'). "\n"; // DAP
echo initials('AULIA ABRAR'). "\n"; // AAB
echo initials('AULIA'). "\n"; // AUL
答案 1 :(得分:1)
您可以这样做:
elseif ($jum_kata == 2) {
echo substr($kata[0],0,1);
echo substr($kata[1],0,2);
}
这只会得到第一个单词的第一个字符,然后是下一个单词的两个字符。
您从每个单词返回两个字符,这就是为什么您得到AUAB
的原因。