Array's met elkaar vergelijken.
$array1 = array(1 => 'A', 2 => 'B', 3 => 'C', 4 => 'D', 5 => 'E', 6 => 'G');
$array2 = array(1 => 'A', 2 => 'X', 3 => 'Y', 4 => 'D', 5 => 'E', 6 => 'Z');
fouten: 3
welke-key: 2, 3, 6
Ik zou willen dat er uit komt hoeveel values anders zijn en wanneer die er zijn welke key dat dan zijn.
foreach loop en de functie in_array. Een klein basisje:
Zoals je ziet moet je zelf nog iets bedenken om de key uit de array te halen en deze in de $fouten te stoppen.
Dat kan je doen met een Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
$eerste = array('A', 'B', 'C', 'D', 'E');
$tweede = array('A', 'C', 'B', 'D', 'F');
$fouten = array();
foreach($eerste as $e)
{ // Voor elk item van $eerste
if(!in_array($e, $tweede))
{ // Als $e niet voorkomt in $tweede
// Plaats de array key in $fouten
}
}
// Met sizeof tel je de aantal items in $fouten
echo 'Fouten: '.sizeof($fouten)."<br>\n";
// Met implode voeg je een ', ' toe tussen de items en maak je er een string van
echo 'Welke key: '.implode(', ',$fouten)."<br>\n";
?>
$eerste = array('A', 'B', 'C', 'D', 'E');
$tweede = array('A', 'C', 'B', 'D', 'F');
$fouten = array();
foreach($eerste as $e)
{ // Voor elk item van $eerste
if(!in_array($e, $tweede))
{ // Als $e niet voorkomt in $tweede
// Plaats de array key in $fouten
}
}
// Met sizeof tel je de aantal items in $fouten
echo 'Fouten: '.sizeof($fouten)."<br>\n";
// Met implode voeg je een ', ' toe tussen de items en maak je er een string van
echo 'Welke key: '.implode(', ',$fouten)."<br>\n";
?>
Zoals je ziet moet je zelf nog iets bedenken om de key uit de array te halen en deze in de $fouten te stoppen.
Gewijzigd op 04/05/2011 17:09:19 door Wouter J
Wouter J op 04/05/2011 17:08:11:
Dat kan je doen met een foreach loop en de functie in_array. Een klein basisje:
Zoals je ziet moet je zelf nog iets bedenken om de key uit de array te halen en deze in de $fouten te stoppen.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
$eerste = array('A', 'B', 'C', 'D', 'E');
$tweede = array('A', 'C', 'B', 'D', 'F');
$fouten = array();
foreach($eerste as $e)
{ // Voor elk item van $eerste
if(!in_array($e, $tweede))
{ // Als $e niet voorkomt in $tweede
// Plaats de array key in $fouten
}
}
// Met sizeof tel je de aantal items in $fouten
echo 'Fouten: '.sizeof($fouten)."<br>\n";
// Met implode voeg je een ', ' toe tussen de items en maak je er een string van
echo 'Welke key: '.implode(', ',$fouten)."<br>\n";
?>
$eerste = array('A', 'B', 'C', 'D', 'E');
$tweede = array('A', 'C', 'B', 'D', 'F');
$fouten = array();
foreach($eerste as $e)
{ // Voor elk item van $eerste
if(!in_array($e, $tweede))
{ // Als $e niet voorkomt in $tweede
// Plaats de array key in $fouten
}
}
// Met sizeof tel je de aantal items in $fouten
echo 'Fouten: '.sizeof($fouten)."<br>\n";
// Met implode voeg je een ', ' toe tussen de items en maak je er een string van
echo 'Welke key: '.implode(', ',$fouten)."<br>\n";
?>
Zoals je ziet moet je zelf nog iets bedenken om de key uit de array te halen en deze in de $fouten te stoppen.
Sizeof? Waarom geen count?
Roel van de Water op 04/05/2011 17:18:40:
Sizeof? Waarom geen count?
Ik heb eigenlijk altijd sizeof gebruikt. En sizeof is de alias van count, dus het kan allebei.
Uhm, gaat dit niet veel makkelijker met array_diff of array_diff_assoc? :p