2016-04-25 76 views
0

我有2个数组作为$ _SESSION值。它们应该是相同的,但如果它们不是,我想在函数中检查它,并因此创建第三个数组与索引值不相同的数组。例如:Compereing数组并获取索引

$_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的数组中,我只想得到这些从您的解决方案中获得数组索引的单词。我的一切:

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

remove second array_push($ indexes,$ index); – splash58

回答

0

这是略加编辑,并会做你需要什么

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; 
} 

我已经删除了第二个 'array_push($索引,$指数);'因为这不是必需的,并且使用第一个数组中的键而不是第二个'$ index'变量。