我有这样的代码如何像这样编码打印?



输入名称: DEVO AVIDIANTO PRATAMA 输出:行动方案 如果输入三个字,则出现DAP

输入名称: 奥莉娅·阿布拉尔 输出:AAB 如果输入两个单词,则出现AAB

输入名称: 奥利亚 输出: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?

作为另一种方法的变体。将每个下一个字符串放在前一个字符串上,并逐步移位。然后切片结果字符串的开头

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

演示

你可以做:

elseif ($jum_kata == 2) {
echo substr($kata[0],0,1);
echo substr($kata[1],0,2);
}

这将只获取第一个单词的第一个字符,然后从下一个单词中获取两个字符。
您从每个单词返回两个字符,这就是您得到AUAB的原因。

最新更新