编译数组并获取索引


Compereing arrays and getting indexes

我得到了 2 个数组作为 $_SESSION 的值。它们应该是相同的,但如果它们不是,我想在一个函数中检查它,结果使用值不相同的索引创建第三个数组。例如:

$_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);
}

这是稍微编辑的,可以做你需要的

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($indexes,$index);,因为这不是必需的,并使用第一个数组中的键,而不是第二个'$index'变量。