Bonjour,

J'ai actuellement 2 tableaux qui se présentent comme ceci:

Tableau 1:

array
  0 =>
    array
      'formationIntitule' => string XXXXXX'
      'objectifPro2' => string 'Remise à niveau'
      'objectifPro6' => string 'Autres'
      'formNiveau' => string 'Satisfaisant'
      'formAccueil' => string 'Satisfaisant'
      'formRespect' => string 'Très satisfaisant'
      'formContenu' => string 'Très satisfaisant'
      'formSupport' => string 'Très satisfaisant'
      'formRythme' => string 'Très satisfaisant'
      'formDuree' => string 'Très satisfaisant'
      'formPedago' => string 'Très satisfaisant'
      'formDispo' => string 'Très satisfaisant'
      'formOrga' => string 'Satisfaisant'
      'eval' => string '9'
  1 =>
    array
      'formationIntitule' => string 'XXXX'
      'formNiveau' => string 'Satisfaisant'
      'formAccueil' => string 'Très satisfaisant'
      'formRespect' => string 'Satisfaisant'
      'formContenu' => string 'Satisfaisant'
      'formSupport' => string 'Satisfaisant'
      'formRythme' => string 'Très satisfaisant'
      'formDuree' => string 'Très satisfaisant'
      'formPedago' => string 'Très satisfaisant'
      'formDispo' => string 'Très satisfaisant'
      'formOrga' => string 'Satisfaisant'
      'eval' => string '9'

Tableau 2

array
  0 =>
    array
      'formationIntitule' => string 'Anglais'
  1 =>
    array
      'formationIntitule' => string Français'
  2 =>
    array
      'formAccueil' => string 'Satisfaisant'

Je souhaiterais supprimer du tableau 1 tous les enregistrements ne correspondant pas au tableau 2.
En gros dans ce cas précis, je ne veux garder dans le tableau 1 que les enregistrements avec "formationInitule" égal à "Anglais" ou "Français", ainsi que les "formAccueil" = "Satisfaisant"

Je tourne en rond depuis un moment sans trouver la solution qui doit être toute bête…

Il y a bien la solution consistant à passer en revu les éléments du tableau 2, et pour chacun vérifier s'il sont présents dans le tableau 2 (et supprimer ce qu'il faut), mais peut-être existe-t-il des fonctions déjà faites pour ça?

Par avance, merci!

4 réponses


avec des array_map et array_intersect il doit pouvoir se faire des trucs, ou avec un array filter,
Mais pour bien comprendre, tu souhaites garder toute la ligne du tableau 1 si l'une des condition est remplie ou filtrer sur la ligne que les clés présentes dans le tableau 2?

immaginons que tab 1 :
array
0 =>
array
'formationIntitule' => string Français'
'objectifPro2' => string 'Remise à niveau'
'objectifPro6' => string 'Autres'
'formNiveau' => string 'Satisfaisant'
'formAccueil' => string 'Satisfaisant'
'formRespect' => string 'Très satisfaisant'
'formContenu' => string 'Très satisfaisant'
'formSupport' => string 'Très satisfaisant'
'formRythme' => string 'Très satisfaisant'
'formDuree' => string 'Très satisfaisant'
'formPedago' => string 'Très satisfaisant'
'formDispo' => string 'Très satisfaisant'
'formOrga' => string 'Satisfaisant'
'eval' => string '9'
1 =>
array
'formationIntitule' => string 'Anglais'
'formNiveau' => string 'Satisfaisant'
'formAccueil' => string 'Très satisfaisant'
'formRespect' => string 'Satisfaisant'
'formContenu' => string 'Satisfaisant'
'formSupport' => string 'Satisfaisant'
'formRythme' => string 'Très satisfaisant'
'formDuree' => string 'Très satisfaisant'
'formPedago' => string 'Très satisfaisant'
'formDispo' => string 'Très satisfaisant'
'formOrga' => string 'Satisfaisant'
'eval' => string '9'
2 =>
array
'formationIntitule' => string 'Allemand'
'formNiveau' => string 'Satisfaisant'
'formAccueil' => string 'Très satisfaisant'
'formRespect' => string 'Satisfaisant'
'formContenu' => string 'Satisfaisant'
'formSupport' => string 'Satisfaisant'
'formRythme' => string 'Très satisfaisant'
'formDuree' => string 'Très satisfaisant'
'formPedago' => string 'Très satisfaisant'
'formDispo' => string 'Très satisfaisant'
'formOrga' => string 'Satisfaisant'
'eval' => string '9'

et ton même tableau 2,

Le résultat serait :

array
0 =>
array
'formationIntitule' => string Français'
'objectifPro2' => string 'Remise à niveau'
'objectifPro6' => string 'Autres'
'formNiveau' => string 'Satisfaisant'
'formAccueil' => string 'Satisfaisant'
'formRespect' => string 'Très satisfaisant'
'formContenu' => string 'Très satisfaisant'
'formSupport' => string 'Très satisfaisant'
'formRythme' => string 'Très satisfaisant'
'formDuree' => string 'Très satisfaisant'
'formPedago' => string 'Très satisfaisant'
'formDispo' => string 'Très satisfaisant'
'formOrga' => string 'Satisfaisant'
'eval' => string '9'
1 =>
array
'formationIntitule' => string 'Anglais'
'formNiveau' => string 'Satisfaisant'
'formAccueil' => string 'Très satisfaisant'
'formRespect' => string 'Satisfaisant'
'formContenu' => string 'Satisfaisant'
'formSupport' => string 'Satisfaisant'
'formRythme' => string 'Très satisfaisant'
'formDuree' => string 'Très satisfaisant'
'formPedago' => string 'Très satisfaisant'
'formDispo' => string 'Très satisfaisant'
'formOrga' => string 'Satisfaisant'
'eval' => string '9'

ou

array
0 =>
array
'formationIntitule' => string Français'
'formAccueil' => string 'Satisfaisant'
1 =>
array
'formationIntitule' => string 'Anglais'
'formAccueil' => string 'Très satisfaisant'

?

jouvrard
Auteur

Bonjour,

Désolé pour le temps de réponse, les vacances, tout ça... ;)

Bref, je souhaiterais garder toute la ligne du tableau 1 si elle remplie les conditions.

Bonjour,

Dans ce cas, regarde du coté de la fonction array_filter : https://www.php.net/manual/fr/function.array-filter.php.

Tu l'appliques à ton tableau 1, qui va dire en gros pour chaque élément je garde ou je supprime. Et là, tu fais tes vérifs par rapport à ton tableau 2.

jouvrard
Auteur

Ok merci, je vais regarder ça de près.
Meric!