2

我有这个字符串:13.23E。我需要的是剪切字母E(或任何最后一个字母)以获得两个变量,一个带有数字,一个带有字母。

例子:

$var = "12345E";
print_r(removeLastLetter($var));

// OUTPUT
array(
  [0] => "12345",
  [1] => "E"
)

有什么帮助吗?
谢谢。

4

7 回答 7

2
function removeLastLetter($string) 
{
    $part1 = substr($string, 0, -1); // get chars upto last
    $part2 = substr($string, -1); // get last char

    return array($part1, $part2);
}

输出:

Array
(
    [0] => 12345
    [1] => E
)

演示!

于 2013-10-19T12:26:01.067 回答
1

检查这个:

$tmp[0]=substr($var, 0, -1);
$tmp[1]=substr($var,-1);

print_r($tmp);

享受 ;)

于 2013-10-19T12:28:41.107 回答
1

您可以使用substr()

$var = "12345E";

$letter = substr ($var, -1);
$number = substr ($var, 0, -1);

print "Letter is {$letter} and number is {$number}\n";

// Output:
// Letter is E and number is 12345
于 2013-10-19T12:29:06.683 回答
1

如果这是一个数组而不是字符串,您将使用array_pop,因此我将创建一个名为的函数string_pop()并将其添加到我的助手列表中。

它会模仿array_pop函数,但用于字符串。

array_pop像这样工作

function array_pop(array &$array){

    $last_value = end($array); 
    $last_key = key($array);
    unset($array[$last_key]);
    reset($array);
    return $last_value;
}

所以 string_pop看起来像这样

function string_pop(&$str){
    $last_char = substr($str, -1);
    $str = substr($str, 0, -1);
    return $last_char;
}

您现在所要做的就是将返回值和原始变量放入一个数组中,或者创建一个函数来为您执行此操作string_pop_array()

function string_pop_array($str) {
    $last_char = string_pop($str);
    return array($str, $last_char);
}


$var = '12345E';
print_r(string_pop_array($var);   

Array
(
    [0] => 12345
    [1] => E
)

usingstring_pop()会改变传递给它的变量($str),这是因为它是通过引用传递的,但是通过调用string_pop_array()函数,原始字符串($var)不会受到影响,只有$str函数范围内的变量会改变。

只是为了解决松散的问题,这里是一个数组的等效函数。

function array_pop_array($arr) {
    $last_element = array_pop($arr);
    return array($arr, $last_element);
}


$arr = array(1,2,3,4,5,'E');
print_r(array_pop_array($arr);    

Array (
    [0] => Array ( 
        [0] => 1 
        [1] => 2 
        [2] => 3 
        [3] => 4 
        [4] => 5  
    )
    [1] => E 
)

和等价于array_shift的字符串

function string_shift(&$str){
    $first_char = substr($str, 0, 1);
    $str = substr($str, 1);
    return $first_char;
}

演示

于 2015-07-29T10:25:59.107 回答
0

不是一个严肃的答案,只是一个有趣的 - 非常讨厌,你已经被警告了! - 解决这个问题的方法

$var = '10.25E';
$number = (float)$var;
$letter = substr($var, strlen($number));
于 2013-10-19T12:49:43.500 回答
0
$source = "12345E";

print_r(array(substr($source, 0, strlen($source) -1), $source[strlen($source) -1]));
于 2013-10-19T12:26:46.337 回答
0

你的功能:

 function removeLastLetter($var) {
       $ret = array();
       // remove the last character
       $ret[] = substr($var, 0, -1);
       // get the last character
       $ret[] = $var[strlen($var)-1]
       return $ret;
    }
于 2013-10-19T12:29:47.497 回答