Heim  >  Artikel  >  Backend-Entwicklung  >  array小问题

array小问题

WBOY
WBOYOriginal
2016-06-20 12:37:38856Durchsuche

<?php$roomlist=array('0'=>array('id' => '11'),'1'=>array('id' => '22'),);$rand_keys = array_rand($roomlist, 1);var_dump($rand_keys);echo gettype($rand_keys);echo ("\n");echo ("\n");$rand_keys = array_rand($roomlist, 2);var_dump($rand_keys);echo gettype($rand_keys);?>


输出为:
int(0)
integer

array(2) {
  [0]=>
  int(0)
  [1]=>
  int(1)
}
array

一个小问题,对于第一个测试,array_rand($roomlist, 1); 怎么返回的是 integer,而不是array呢?


回复讨论(解决方案)

array_rand() 函数返回数组中的随机键名,或者如果您规定函数返回不只一个键名,则返回包含随机键名的数组。

貌似只是返回的key

array_rand() 函数返回数组中的随机键名,或者如果您规定函数返回不只一个键名,则返回包含随机键名的数组。



我疑惑的是,为什么array_rand 的第二个参数为 1时,返回的不是 array,而是 integer

如果我这样使用就会出bug
<?php$roomlist=array('0'=>array('id' => '11'),);$array_size = count($roomlist)$rand_keys = array_rand($roomlist, $array_size);   //size为1时,返回为integer,size>=2时,返回的是array,下面的操作无法统一var_dump($rand_keys);echo gettype($rand_keys);echo ("\n");echo ("\n"); $val = $roomlist[$rand_keys[0]];


看到了不??  由于 $rand_keys为integer时存在bug

貌似只是返回的key



是只返回key,,在c++里,返回array就是array,返回integer时返回就是integer,,不会因为函数的参数改变而改变。。

不一致时需要特殊处理。。而且也不合理,一个函数两种返回类型。。。看我的测试

定义和用法
array_rand() 函数返回数组中的随机键名,或者如果您规定函数返回不只一个键名,则返回包含随机键名的数组。
说明
array_rand() 函数从数组中随机选出一个或多个元素,并返回。
第二个参数用来确定要选出几个元素。如果选出的元素不止一个,则返回包含随机键名的数组,否则返回该元素的键名。

如果看不懂手册,或者非要质疑手册上的描述。那么神仙也帮不到你

手册上已经写的很清楚了:
------
返回值 :
如果你只取出一个,array_rand()返回一个随机单元的键名,否则就返回一个包含随机键名的数组。这样你就可以随机从数组中取出键名和值。 

bug果然是bug。。

脚本语言好奇妙。。。。。啦啦啦啦啦啦啦啦啦

c++er不懂不懂啦啦啦啦啦

另外楼上的回答,难道没看出来我是新手,如果找到了正确/很好的解释我也不开贴了。。。。。。。。。。



自己找到了官网的说法

http://php.net/manual/zh/function.array-rand.php

以后遇到像我一样的新手们,这是php的官方手册

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn