Array's met elkaar vergelijken.

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Koh do

koh do

04/05/2011 16:59:00
Quote Anchor link
Ik heb 2 array's die ik met elkaar wil 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.
 
PHP hulp

PHP hulp

16/01/2025 01:19:51
 
Wouter J

Wouter J

04/05/2011 17:08:11
Quote Anchor link
Dat kan je doen met een foreach loop en de functie in_array. Een klein basisje:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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";
?>


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
 
Vincent Huisman

Vincent Huisman

04/05/2011 17:11:43
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php
  $eerste
= array("a", "b", "c", "d", "e");
  $tweede = array("a", "c", "b", "d", "e");
  
  for($i=0; $i<count($eerste); $i++)
  {

      if($eerste[$i] != $tweede[$i])
      {

          echo $eerste[$i].' is niet gelijk aan '.$tweede[$i];
      }
  }

?>
 
Roel -

Roel -

04/05/2011 17:18:40
Quote Anchor link
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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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";
?>


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?
 
Wouter J

Wouter J

04/05/2011 17:25:11
Quote Anchor link
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.
 
Kees Schepers

kees Schepers

04/05/2011 18:05:23
Quote Anchor link
Uhm, gaat dit niet veel makkelijker met array_diff of array_diff_assoc? :p
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.