我的php函数不起作用 - 整数到字符串转换问题

时间:2016-08-18 11:25:32

标签: php

这是我必须返回的php函数" 5"但它什么都不返回。

<?php
function get_second($num){
$second = $num[1]; //must return second number of the variable.
return $second;
}

$numbers=456789;
echo get_second($numbers);
?>

当我试用这段代码时,它什么都不返回(NULL,空)。 但是我在下面尝试了这个功能,工作得很好。

<?php

function get_second($num){
  $second = $num[1]; //must return second number of the variable.
  return $second;
}

$numbers=$_POST['number_input'];//that includes numbers
echo get_second($numbers);
?>

此代码返回第二个发布数据。我必须做些什么来完成我的第一个功能?第一个 $ numbers 变量和第二个 $ numbers 变量之间有什么区别?

5 个答案:

答案 0 :(得分:1)

这里必须更好地定义问题:如何从数字中获取第二个数字。您的初始方法在逻辑上是正确的,但在假设数字是字符的顺序集时是不正确的。只有字符串是有序的字符集。将integer 45678转换为string 45678后,您可以使用substr或直接使用字符串轻松拦截第二个字符 - 因为在PHP中字符串可以视为字符数组。

@RamRaider解决方案比其他人提出的要好,但使用preg_split是过分的。其他解决方案要求您修改变量的类型,这不是通过添加引号来完成的,而是通过强制转换为字符串来完成的,这比正则表达式更简单,更快,并且您保持原始形式的原始变量和原始函数定义。

function get_second($num){
    $second = $num[1]; //must return second number of the variable.
    return $second;
}

$numbers = 456789;
// casting to string 
echo get_second((string)$numbers);
// or transform to string by concatenation to a string
echo get_second($numbers  ."");
// even quoting works
echo get_second("$numbers");
// using strval
echo get_second(strval($numbers));
// using settype
echo get_second(settype($numbers, "string"));

答案 1 :(得分:0)

试试这个:(在整数变量中添加引号)

<?php
function get_second($num){
$second = $num[1]; //must return second number of the variable.
return $second;
}

$numbers="456789";
echo get_second($numbers);
?>

答案 2 :(得分:0)

如果你想通过它的编号获得Character,那么你可以使用substr()

function get_second($num)
{
   return substr($num,1,1);
}


$numbers="456789";
echo get_second($numbers);

答案 3 :(得分:0)

您在$ number变量中声明了一个数字。 如果要查看第二个元素,则必须使用字符串。

$ numbers =“456789”;

它将输出5。

答案 4 :(得分:0)

您可以使用preg_split强制一个数组,您可以通过索引从中选择任意数字,例如:

$number=12358397;

function get_number($num,$i){
    $num=preg_split( '@^\d$@', $num );
    return $num[0][$i];
}

echo ' [1] > > > ' . get_number($number,1);