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(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 に答える