2012-09-19 30 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变量都是一个数组。