2013-02-03 44 views
2

我有基本的PHP問題PHP如何在內部表示字符串?

可以說我有一個字符串「2013年2月3日」,這是怎麼內部表示在PHP中,是比較兩個當它轉換爲整數或十六進制相當於

字符串,PHP如何在內部比較它們?

感謝您提前回答

+2

它存儲爲一個字符串。顯然,在內部它都是二元的。 [比較運算符](http://php.net/manual/en/language.operators.comparison.php)和[類型比較](http://php.net/manual/en/types.comparisons.php) – Kermit

回答

0

字符串是字符串。沒有轉換髮生;你的字符串恰好包含了一些數字,這很好,但PHP並沒有將它與任何其他字符串進行任何處理。

PHP比較字符串的方式與任何其他語言的方式相同:它逐個字符地遍歷兩個字符串,並查找第一對不同的字符。一旦找到一個字符串,那麼具有較低ASCII值的字符的字符串(比如從ord()得到的字符串)被認爲比另一個字符串「小於」。

+0

您可能想對'strcmp'和相關函數進行高級字符串比較的評論。 –

1

PHP字符串只是一個字節序列,沒有編碼標記。訪問here獲取更多信息..

4

PHP是用C編寫的。所有變量都是ZVAL結構。

請閱讀這些教程以瞭解有關PHP內部結構的更多信息,並開始編寫擴展。

表1示出了多種類型,和它們相應的字母代碼 和C類型可與zend_parse_parameters()可以使用:

Type  Code Variable Type 
Boolean b  zend_bool 
Long  l  long 
Double d  double 
String s  char*, int 
Resource r  zval* 
Array  a  zval* 
Object o  zval* 
zval  z  zval* 
+0

沿着char *的* int *表示字符串的大小 - 即字符串不需要以'\ 0'結尾? –

+0

@ ring0這100%是正確的,在PHP中的字符串不需要'\ 0'終止:) –