PHP中各種資料型別的區別和轉換方法

2021-07-04 11:14:25 字數 1288 閱讀 1153

php本身可以通過隱式型別轉換和顯式型別轉換兩種方式來實現:

1. 隱式型別轉換

例如

<?php

$a = 7;

$b = 'abcdsfdf';

echo $a . $b;

?>

在這裡 $a 就被隱式的轉化成了字串,原始碼實現如下

if (unexpected(z_type_p(op1) != is_string)) 

zend_try_binary_object_operation(zend_concat, concat_function);

use_copy1 = zend_make_printable_zval(op1, &op1_copy);

2. 顯式型別轉換

例如

<?php

$double = 5.2323;

echo (int)$double;

?>

此時$double被強制轉化為整形,該函式的實現是由原始碼中convert_to一系列方法實現的。

例如:zend_api void zend_fastcall _convert_to_string(zval *op zend_file_line_dc)

除此之外,還可以用

bool settype ( mixed &$var , string $type )函式來實現變數型別轉化,原始碼實現如下:

php_function(settype)

zval_deref(var);

if (!strcasecmp(type, "integer")) else if (!strcasecmp(type, "int")) else if (!strcasecmp(type, "float")) else if (!strcasecmp(type, "double")) else if (!strcasecmp(type, "string")) else if (!strcasecmp(type, "array")) else if (!strcasecmp(type, "object")) else if (!strcasecmp(type, "bool")) else if (!strcasecmp(type, "boolean")) else if (!strcasecmp(type, "null")) else if (!strcasecmp(type, "resource")) else

retval_true;

}

PHP各種資料型別轉換

第一種轉換方式 int bool float double real string array object num1 3.14 num2 int num1 var dump num1 輸出float 3.14 var dump num2 輸出int 3 第二種轉換方式 intval floatva...

各種資料型別OuO

char 1 個位元組 128 到 127 或者 0 到 255 unsigned char 1 個位元組 0 到 255 signed char 1 個位元組 128 到 127 int4 個位元組 2147483648 到 2147483647 unsigned int 4 個位元組 0 到 4...

各種資料型別和0比較

不可將布林變數直接與true false或者1 0進行比較。假設布林變數名字為flag,它與零值比較的標 準if語句如下 if flag 表示flag為真 if flag 表示flag為假 其他為不良寫法。應當將整型變數用 或 直接與0比較。假設整型變數的名字為value,它與零值比較的標準if語句...