2012-09-19 61 views
2

中的數組,你可以像數組一樣在字符串中進行數字索引。
ex。是字符串php

$text = "esenihc gnikcuf yloh"; 
echo $text[0]; 
echo $text[1]; 
echo $text[2]; 
................... 
................... 
................... 



但是,如果你把字符串中的print_r()不是同樣會發生像數組,你不能這樣做算()的字符串。

我讀了文檔,它說。 計數() 返回1如果不是在參數

的print_r() 數組如果字符串是在參數它只是打印該字符串。

這不是確切的詞,而是像這樣的東西。


爲什麼這兩個函數不會將字符串視爲數組?

所以最終的問題是字符串數組?

+2

我知道,那不是我的問題。 – user1628256

回答

1

的字符串是一個數組,如果你把它當作一個數組,例如:echo $text[0],但print_r輸出關於可變人類可讀信息,因此它會輸出該變量。

這就是所謂的Type Juggling

$a = 'car'; // $a is a string 
$a[0] = 'b'; // $a is still a string 
echo $a;  // bar 

要計算一個字符串的長度使用strlen($string),那麼你可以爲for()

+0

所以你的答案是,字符串是一個數組。它只是count()和print_r()不能像正常數組一樣使用字符串。 – user1628256

+0

'count()'只適用於數組類型,如果你像'$ string [0]'那樣處理數組,它將顯示爲數組。 'print_r'將打印該字符串或數組,在這種情況下是字符串。你可以使用'str_split()'使其成爲數組 –

1

沒有一個字符串是沒有數組

字符串是一系列字符,其中一個字符與字節相同,而PHP中的數組實際上是一個有序的映射。地圖是一種將值與鍵關聯的類型。

+0

這就是爲什麼你不能在PHP中使用unicode? – Joe

+0

@Joe對不起,我不明白請告訴更多 –

+0

上面的答案說它是數組,然後你說它不是。 – user1628256

2

與例如C不同,PHP具有內置的string數據類型。 string數據類型允許您對字符串中的單個字符進行類似數組的訪問,但始終爲string。所以如果你把它傳遞給一個接受mixed數據類型的函數,這個函數將決定傳遞參數的數據類型,並以這種方式處理它。這樣print_r()將以它被編程爲輸出字符串的方式打印它,而不像數組。

如果你想要一個功能和count一樣工作,看看strlen

如果你想讓你可以通過str_split「把」你的字符串「變成」一個數組。

0

簡單而直觀地說明每一件事情,每一個php變量都是一個數組。