Home > Backend Development > PHP Tutorial > 字符串就是数组吗

字符串就是数组吗

WBOY
Release: 2016-06-23 13:45:06
Original
2469 people have browsed it

下面这 段代码中$str也没有事先声明为数组,上来就写成数组的样式,这样写是不是太牵强了,因为字符串怎么能是数组呢,要是也行,可事先要声明啊,那么问题来了,这到底是为什么

$str="1234567890";$s='';for($i=0;$i<4;$i++){    $k=mt_rand(1, strlen($str));    $s.=$str[$k-1];}
Copy after login


回复讨论(解决方案)

字符串是字符串,数组是数组,不要混淆了
虽然可以以数组的形式访问字符串。注意只是形式,$str[$k-1] 只是 substr($str, $k-1, 1) 的简写形式
为避免出现误解,php 建议将 $str[$k-1] 写作 $str{$k-1}

至于 也没有事先声明为数组,上来就写成数组的样式,这样写是不是太牵强了 的说法就太形而上了
这是弱类型语言比强类型语言更接近自然语言的特征之一

字符串和数组是不同类型,字符串可以以数组形式访问。你这个例子,$str[$k-1] 是 substr($str, $k-1, 1)的简写,所以可以使用。

但如果是下面这个例子,就不行,所以用合适的类型很重要。

$str="1234567890";$str1="abcdefg";$result = array_diff($str,$str1); // 出错print_r($result);$str=array('1','2','3','4','5','6','7','8','9','0');$str1=array('a','b','c','d','e','f','g');$result = array_diff($str,$str1); // 正常print_r($result);
Copy after login

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template