0

我遇到了数组问题,这是我的代码:

$random_string = array();
for($i=0;$i<10;$i++)
{
$zmienna = generatePassword();
//echo $zmienna;
if (in_array($zmienna, $random_string))
$random_string[$i] = $zmienna;
}

var_dump($random_string);

在屏幕上我看到了 olny

array(0) { } 

怎么了?因为我确信generatePassword();工作得很好

4

3 回答 3

5

这条线失败了。

if (in_array($zmienna, $random_string))

$random_string是空的,所以$zmienna永远不会“进入”它。

我认为您可能打算在其中放置一个 NOT 运算符?如果它不在数组中,添加它?如果是这样:

if (!in_array($zmienna, $random_string))

此外,您的数组将跳过一些键。你最终会得到类似的东西

array(3) {
  [0]=>
  string(1) "a"
  [2]=>
  string(1) "b"
  [4]=>
  string(1) "c"
}

如果您不使用$i(just do $random_string[] = $zmienna;) 指定索引,它将自动执行键,因此您得到

array(3) {
  [0]=>
  string(1) "a"
  [1]=>
  string(1) "b"
  [2]=>
  string(1) "c"
}
于 2012-08-23T17:21:40.363 回答
4

这段代码:

if (in_array($zmienna, $random_string)) 
    $random_string[$i] = $zmienna;

如果它已经在那里,$zmienna将添加;$random_string由于它在代码开头是一个空白数组,因此永远不会添加它,因此该数组将保持为空。

你的意思是:

if (! in_array($zmienna, $random_string)) {

如果它还没有,哪个会添加它?

于 2012-08-23T17:21:52.387 回答
1

In_array 函数始终返回 false 在此代码语句中 - 它不添加到数组中,只是检查。这就是为什么他是错误的。

于 2012-08-23T17:24:21.323 回答