Adding dollar sign before each string in array?

前端 未结 2 715
北海茫月
北海茫月 2021-01-27 07:10

I have this string: $str = \"(he+is+genius*2)/clever\"; which looks like this in array;

Array ( 
  [0] => ( 
  [1] => he 
  [2] => + 
  [3]         


        
相关标签:
2条回答
  • 2021-01-27 07:17

    Just map the array using array_map and check if their values are string or not with ctype_alpha, concatenating the $ to it.

    $array = array ( 
    0 => "(",
    1 => "he",
    2 => "+",
    3 => "is",
    4 => "+",
    5 => "genius",
    6 => ")",
    7 => "*",
    8 => "and",
    9 => "/", 
    10 => "clever"
    );
    
    $strA = array_map (function($a) {
        if (ctype_alpha($a)) // if only alphabetic characters return it with dollar sign
            return "$".$a;
        return $a; // else return normal
    }, $array );
    
    echo implode("",$strA); // ($he+$is+$genius)*$and/$clever
    
    0 讨论(0)
  • 2021-01-27 07:41

    For each value, check if the first char (or the whole value) is made of characters with ctype_alpha, then prepend with $ :

    // $arr is your array as defined in your question
    foreach ($arr as &$val) {
     //OR if (ctype_alpha($val[0])) { 
     if (ctype_alpha($val)) {
       $val = '$' . $val;
     }
    }
    
    var_dump($arr);
    

    Output :

    array(6) {
      [0]=>
      string(3) "$he"
      [1]=>
      string(1) "+"
      [2]=>
      string(3) "$is"
      [3]=>
      string(1) "+"
      [4]=>
      string(7) "$genius"
      ...
    }
    

    Second solution, checking if it has a char at any position :

    foreach ($arr as &$val) {
      $tmp = str_split($val); 
      foreach ($tmp as $char) {
        if (ctype_alpha($char)) {
          $val = '$' . $val;
          break;
        }
      } 
    }
    
    0 讨论(0)
提交回复
热议问题