2016-04-25 7 views
0

$ _SESSIONの値として2つの配列があります。それらは同一でなければなりませんが、そうでない場合は、関数内でチェックしたいと思います。その結果、値が同じでないインデックスを持つ3番目の配列を作成します。例:ここでは配列の比較とインデックスの取得

$_SESSION['correctAnswers'] = ([0] => 'horse' [1] => 'elephant' [3] => 'tiger') 

$_SESSION['usersAnswerArray'] = ([0] => 'dog' [1] => 'cat' [3] => 'tiger') 

$result = ([0] => 0 [1] => 1) 

は動作しません、私の関数である。

public function getWrongIndexes() 
{ 
    $index=0; 
    unset($licznik); 
    unset($indexes); 

    foreach($_SESSION['correctAnswers'] AS $correct) 
    { 
     if(trim($correct) != trim($_SESSION['usersAnswerArray'][$index])) 
     { 
      if(isset($indexes)) 
      { 
       array_push($indexes,$index); 
      }else{ 
       $indexes[0] = $index; 
      } 
      array_push($indexes,$index); 
     } 
     $index++; 
    } 
    print_r($indexes); 
    //return $indexes; 
} 

は私の問題を解決するすべての機能がありますか?そうでない場合は、どうすればいいですか?私の問題解決のための

@editのおかげで

あなたが同様の問題で私を助けてもらえますか?今度は$ wordsという名前の配列から、あなたのソリューションから配列からインデックスを得た単語だけを取得したいと思います。 'array_push($インデックス、$インデックス);'

public function createNewWordsList($indexes) 
{ 
    $words = $this->wordsArray(); 
    $licznik = 0; 
    $result = array(); 

    foreach($words AS $i => $word) 
    { 
     if($i == $indexes[$licznik]) 
     { 
      $licznik++; 
      $result[] = $word; 
     } 
    } 
    print_r($word); 
} 
+0

2番目のarray_push($ indexes、$ index)を削除します。 – splash58

答えて

0

このわずかに編集されていて、私は2番目を削除した

public function getWrongIndexes() 
{ 
    $indexes = array(); 

    foreach($_SESSION['correctAnswers'] AS $i => $correct) 
    { 
     if(trim($correct) != trim($_SESSION['usersAnswerArray'][$i])) 
     { 
      $indexes[] = $i; 
     } 
    } 
    print_r($indexes); 
    //return $indexes; 
} 

が必要なものを行います:私が得たすべての2番目の '$ index'変数ではなく、最初の配列のキーを使用しています。

関連する問題