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

时间:2018-09-13 07:43:01

标签: php

输入名称: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吗?

2 个答案:

答案 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

demo

答案 1 :(得分:1)

您可以这样做:

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

这只会得到第一个单词的第一个字符,然后是下一个单词的两个字符。
您从每个单词返回两个字符,这就是为什么您得到AUAB的原因。