>백엔드 개발 >PHP 문제 >PHP에서 강제로 문자열로 변환하는 방법

PHP에서 강제로 문자열로 변환하는 방법

藏色散人
藏色散人원래의
2021-03-15 09:13:413891검색

PHP에서 문자열로 강제 변환하는 방법: 먼저 PHP 샘플 파일을 만든 다음 변수를 정의하고 마지막으로 PHP에서 문자열 메서드를 통해 문자열로 강제 변환합니다.

PHP에서 강제로 문자열로 변환하는 방법

이 기사의 운영 환경: Windows 7 시스템, PHP 버전 7.1, DELL G3 컴퓨터

PHP 강제 변환 유형

Get 데이터 유형:

1. 표현식의 값과 유형을 확인하려면 var_dump()를 사용하세요.
2. 디버깅을 위해 읽기 쉬운 유형 표현식을 얻으려면 gettype()을 사용하세요.
3. 특정 유형을 확인하려면 gettype()을 사용하지 말고 is_type() 함수를 사용하세요.

■문자열을 숫자값으로 변환

  1. 문자열을 숫자로 평가할 때 결과의 유형과 값은 다음 규칙에 따라 결정됩니다.
  2. 문자 ".", "e" 또는 "E"가 포함된 경우 문자열은 부동 소수점으로 평가됩니다. 그렇지 않으면 정수로 처리됩니다.
  3. 값은 문자열의 첫 번째 부분에 따라 결정됩니다. 문자열이 유효한 숫자 데이터로 시작하는 경우 해당 숫자가 해당 값으로 사용되며, 그렇지 않은 경우 해당 값은 0입니다. 법적 숫자 데이터는 선택적 기호로 시작하고 그 뒤에 하나 이상의 숫자(선택적으로 소수점 이하 자릿수 포함), 선택적 지수가 옵니다. 지수는 "e" 또는 "E" 뒤에 하나 이상의 숫자가 옵니다.

참고: 문자를 정수로 변환할 때 문자의 인코딩을 기대하지 마세요(아마도 C에서도 이 작업을 수행할 것입니다). 문자 인코딩과 문자 사이를 변환하려면 ord() 및 chr() 함수를 사용하십시오.

■타입 캐스팅

PHP의 타입 캐스팅은 C와 매우 유사합니다. 변환할 변수 앞에 대상 유형을 괄호로 묶습니다.

허용되는 형변환은 다음과 같습니다:

  • (int), (integer) - 정수 유형으로 변환
  • (bool), (boolean) - 부울 유형으로 변환
  • (float), (double), (real ) - 부동 소수점 유형으로 변환
  • (문자열) - 문자열로 변환
  • (배열) - 배열로 변환
  • (객체) - 객체로 변환

대괄호 안에는 공백과 탭이 허용됩니다

할 수 있습니다. 강제 변환에는 settype(혼합 var, 문자열 유형)도 사용하세요.

1. 부울 값으로 강제 변환(bool) | (boolean)

값을 부울로 명시적으로 변환하려면 (bool) 또는 (boolean)을 사용하세요. . 그러나 많은 경우 연산자, 함수 또는 흐름 제어에 부울 매개변수가 필요한 경우 값이 자동으로 변환되므로 캐스팅이 필요하지 않습니다.
부울로 변환하면 다음 값은 FALSE로 간주됩니다.
부울 값 FALSE
정수 값 0(영)
부동 소수점 값 0.0(영)
빈 문자열 및 문자열 "0"
멤버 변수 없음 배열
객체가 없는 개체 셀(PHP 4에만 해당)
특수 유형 NULL(아직 설정되지 않은 변수 포함)
다른 모든 값은 TRUE로 간주됩니다(모든 리소스 포함).

<?php
var_dump((bool) ""); // bool(false)
var_dump((bool) 1); // bool(true)
var_dump((bool) -2); // bool(true)
var_dump((bool) "foo"); // bool(true)
var_dump((bool) 2.3e5); // bool(true)
var_dump((bool) array(12)); // bool(true)
var_dump((bool) array()); // bool(false)
var_dump((bool) "false"); // bool(true)
?>

2. 정수로 변환(int)|(integer)

값을 명시적으로 정수로 변환하려면 (int) 또는 (integer) 변환을 사용하세요. 그러나 대부분의 경우 연산자, 함수 또는 흐름 제어에 정수 매개변수가 필요한 경우 값이 자동으로 변환되므로 캐스팅이 필요하지 않습니다. intval() 함수를 사용하여 값을 정수 유형으로 변환할 수도 있습니다. LA. BOOL에서 변환
B. 범위를 벗어나면 결과가 불확실하므로 수정하기 위해
C. 문자열을 값으로 변환
D. 변환

알 수 없는 분수를 정수로 변환하지 마세요. 때로는 예상치 못한 결과가 발생할 수 있습니다.


<?php
echo (int) ( (0.1+0.7) * 10 ); // 显示 7
?>
$str = "123.456abc7"; // (int)123
echo (int)$str;
$str = "abc123.456";   // (int)0
$str = true;           // (int)1
$str = false;          // (int)0

    3.强制转换为浮点型 (int)|(double)|(real)|doubleval()|floatval()|intval() 
精度: 0.12345678901234 // double,real都一样
数据的丢失参 字符串转换为数值
【推荐学习:《PHP视频教程》】    
    4.强制换为字符串 (string) |strval()
可以用 (string) 标记或者 strval() 函数将一个值转换为字符串。当某表达式需要字符串时,字符串的转换会在表达式范围内自动完成。例如当使用 echo() 或者 print() 函数时,或者将一个变量值与一个字符串进行比较的时候。

  • 布尔值 TRUE 将被转换为字符串 "1",而值 FALSE 将被表示为 ""(即空字符串)。这样就可以随意地在布尔值和字符串之间进行比较。
  • 整数或浮点数数值在转换成字符串时,字符串由表示这些数值的数字字符组成(浮点数还包含有指数部分)。
  • 数组将被转换成字符串 "Array",因此无法通过 echo() 或者 print() 函数来输出数组的内容。请参考下文以获取更多提示。
  • 对象将被转换成字符串 "Object"。如果因为调试需要,需要将对象的成员变量打印出来,请阅读下文。如果希望得到该对象所依附的类的名称,请使用函数 get_class()。自 PHP 5 起,如果合适可以用 __toString() 方法。
  • 资源类型总是以 "Resource id #1" 的格式被转换成字符串,其中 1 是 PHP 在运行时给资源指定的唯一标识。如果希望获取资源的类型,请使用函数 get_resource_type()。
  • NULL 将被转换成空字符串。

正如以上所示,将数组、对象或者资源打印出来,并不能提供任何关于这些值本身的有用的信息。请参阅函数 print_r() 和 var_dump(),对于调试来说,这些是更好的打印值的方法。 
可以将 PHP 的值转换为字符串以永久地储存它们。这种方法被称为序列化,可以用函数 serialize() 来完成该操作。如果在安装 PHP 时建立了 WDDX 支持,还可以将 PHP 的值序列化为 XML 结构。 
    4. 强制转换为数组 (array)

  • 对于任何的类型:整型、浮点、字符串、布尔和资源,如果将一个值转换为数组,将得到一个仅有一个元素的数组(其下标为 0),该元素即为此标量的值。
  • 如果将一个对象转换成一个数组,所得到的数组的元素为该对象的属性(成员变量),其键名为成员变量名。
  • 如果将一个 <span style="font-family: NSimsun">NULL</span> 值转换成数组,将得到一个空数组。

         5. 转换为对象 (object)
如果将一个对象转换成对象,它将不会有任何变化。如果其它任何类型的值被转换成对象,内置类 stdClass 的一个实例将被建立。如果该值为 NULL,则新的实例为空。数组转换成对象将使键名成为属性名并具有相对应的值。对于任何其它的值,名为 scalar 的成员变量将包含该值
    6. 转换为资源 (无法转换)
由于资源类型变量保存有为打开文件、数据库连接、图形画布区域等的特殊句柄,因此无法将其它类型的值转换为资源。
■PHP 类型比较表
以下的表格显示了 PHP 类型和比较运算符在松散和严格比较时的作用。该补充材料还和类型戏法的相关章节内容有关。

  • 注意
  • HTML 表单并不传递整数、浮点数或者布尔值,它们只传递字符串。要想检测一个字符串是不是数字,可以使用 is_numeric() 函数。
  • 在没有定义变量 $x 的时候,诸如 if ($x) 的用法会导致一个 E_NOTICE 级别的错误。所以,可以考虑用 empty 

 

위 내용은 PHP에서 강제로 문자열로 변환하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.