我有两个数组
$give_ans = Array ( [0] =>0 [1] => 0[2] =>0 [3] =>0 [4] => 0[5] =>0 [6] =>1 [7] =>2 [8] => [9] =>4 [10] => 3[11] =>1 [12] => 0[13] => 2[14] => 1[15] =>2 [16] =>0 [17] =>0 )
和
$correct_Ans = Array ( [0] => 3 [1] => 1 [2] => 4 [3] => 2 [4] => 3 [5] => 2 [6] => 1 [7] => 2 [8] => 2 [9] => 2 [10] => 2 [11] => 2 [12] => 2 [13] => 2 [14] => 2 [15] => 2 [16] => 2 [17] => 2 )
从这两个数组中,我想检查如果两个数组的相同索引的元素相等,那么它们应该放在一个数组中。
如果give_ans
数组中的元素为0,则应将它们放入另一个数组
,其余元素应放入第三个数组。
如何实现这一目标,请帮助我?
答案 0 :(得分:1)
$length = count($given_ans);
$result = array();
for($i=0; $i < $length; $i++) {
if ($given_ans[$i] == $correct_Ans[$i]) {
$result[] = $given_ans[$i];
}
}
答案 1 :(得分:1)
函数array_diff将在这里为您提供帮助:
http://de3.php.net/manual/en/function.array-diff.php
但是你想索引所有重复的内容,所以只需要循环:
$equalResult = array();
for($c = 0; $c < count($give_ans); $c++) {
if(isset($give_ans[$c]) && isset($correct_Ans[$c])) {
if($give_ans[$c] == $correct_Ans[$c]) {
$equalResult[] = array($give_ans[$c] => $correct_Ans[$c]);
}
}
}
答案 2 :(得分:1)
$give_ans = array(0 => 0, 1 => 0,2 =>0 , 3 =>0 ,4 => 0, 5 =>0 , 6 =>1 ,7 =>2 ,8 => 1,9 =>4 , 10 => 3,11 =>1 ,12 => 0,13 => 2,14 => 1,15 =>2 ,16 =>0 ,17 =>0 );
$correct_Ans = Array (0 => 3 ,1 => 1 ,2 => 4 ,3 => 2 ,4 => 3 ,5 => 2 ,6 => 1 ,7 => 2 ,8 => 2 ,9 => 2 ,10 => 2 ,11 => 2 ,12 => 2 ,13 => 2 ,14 => 2 ,15 => 2 ,16 => 2 ,17 => 2 );
print_r(array_diff($give_ans, $correct_Ans));
返回与
不匹配的元素数组Array ( [0] => 0 [1] => 0 [2] => 0 [3] => 0 [4] => 0 [5] => 0 [12] => 0 [16] => 0 [17] => 0 )
答案 3 :(得分:1)
您可以使用此逻辑
$result = array();
foreach($give_ans as $key => $value){
if($give_ans[$key] == $correct_Ans[$key]){
$result[$key] = $value;
}
}
print_r($result);
答案 4 :(得分:1)
$newArray = array();
$nullArray = array();
$tempArray = array();
for ($i = 0; $i < count($give_ans) ; $i++){
if (($give_ans[$i] === $correct_ans[$i]) && $give_ans !== 0){
array_push($newArray, $give_ans[$i]);
array_push($tempArray, $i);
}else if ($give_ans[$i] === 0){
array_push($nullArray, $i);
array_push($tempArray, $i);
}
}
$othersArray = array();
for ($i = 0; $i < count($give_ans); $i++){
if ($tempArray[$i] !== $give_ans[$i])
array_push($othersArray, $give_ans[$i];
}
for ($i = 0; $i < count($correct_ans); $i++){
if ($tempArray[$i] !== $correct_ans[$i])
array_push($othersArray, $correct_ans[$i];
}
我没时间测试它;)
答案 5 :(得分:0)
您可以使用array_diff()
功能。
答案 6 :(得分:0)
$given_ans = array(0 => 0, 1 => 0,2 =>0 , 3 =>0 ,4 => 0, 5 =>0 , 6 =>1 ,7 =>2 ,8 => 1,9 =>4 , 10 => 3,11 =>1 ,12 => 0,13 => 2,14 => 1,15 =>2 ,16 =>0 ,17 =>0 );
$correct_ans = array(0 => 3 ,1 => 1 ,2 => 4 ,3 => 2 ,4 => 3 ,5 => 2 ,6 => 1 ,7 => 2 ,8 => 2 ,9 => 2 ,10 => 2 ,11 => 2 ,12 => 2 ,13 => 2 ,14 => 2 ,15 => 2 ,16 => 2 ,17 => 2 );
$count = count($given_ans);
for ($i = 0; $i < $count; $i++) {
if ($given_ans[$i] == 0) {
$zero_ans[$i] = $given_ans[$i];
unset($given_ans[$i]);
} else if ($given_ans[$i] == $correct_ans[$i]) {
$result_ans[$i] = $given_ans[$i];
unset($given_ans[$i]);
}
}
echo "Zero value:";
print_r($zero_ans);
echo "Correct:";
print_r($result_ans);
echo "Remaining:";
print_r($given_ans);
此处工作:link
$ result_ans现在将包含匹配索引/值的键和值; $ zero_ans将包含$ given_ans 0值; $ given_ans将包含剩余值。
如果您不想删除$ given_ans,您可以随时复制该数组。