Array [Résolu]

Signaler
Messages postés
954
Date d'inscription
mardi 11 mai 2004
Statut
Membre
Dernière intervention
11 novembre 2008
-
Messages postés
954
Date d'inscription
mardi 11 mai 2004
Statut
Membre
Dernière intervention
11 novembre 2008
-
Salut,

j'ai 2 array :

$pst = array(1,3,9,12);

$voir = array('toto',titi',slt',..........,'rien');



Comment faire pour supprimer les champs defini par $pst dans $voir.

Par ex :

$pst =array(1,3);

$voir = array('t','y','py');



Supprimer le champ 1et 3 de $voir



@+

Immortal-PC,
téléchargements,astuces ,entre-aide informatique , conseils pour vos problèmes d'ordi.
<!--StartFragment -->Grâce à Immortal-PC votre ordinateur passera les âges.

6 réponses

Messages postés
954
Date d'inscription
mardi 11 mai 2004
Statut
Membre
Dernière intervention
11 novembre 2008
2
Re,

j'ai trouvéééééé

<?php

$t1 = array('a','z','e','r','t','y');

$del = array(2,4);

print_r($t1);

echo '
';



$nb_del = count($del)-1;

for($i=0;$i<=$nb_del;$i++){

unset($t1[$del[$i]]);

}

print_r($t1);

?>



@+++

Immortal-PC,
téléchargements,astuces ,entre-aide informatique , conseils pour vos problèmes d'ordi.
<!--StartFragment -->Grâce à Immortal-PC votre ordinateur passera les âges.
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
Hello,



foreach ($pst as $clef_voir) {

$voir_new[] = array_splice ($voir, $clef_voir, 1);

}

$voir = array_diff ($voir_new, $voir);



verifier que je me sois pas plante dans l'ordre des parametres, mais sinon l'idee est la.

Y a d'autres solutions plus simples je pense, sinon : jouer avec array_keys...

ou... , mieux :



$pst = array_flip ($pst);

$voir = array_diff_key ($voir, $pst);
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
Pour une fois j'ai pige du 1er coup ;-)
Messages postés
954
Date d'inscription
mardi 11 mai 2004
Statut
Membre
Dernière intervention
11 novembre 2008
2
lol

je regarde si ça marche...

Immortal-PC,
téléchargements,astuces ,entre-aide informatique , conseils pour vos problèmes d'ordi.
<!--StartFragment -->Grâce à Immortal-PC votre ordinateur passera les âges.
Messages postés
954
Date d'inscription
mardi 11 mai 2004
Statut
Membre
Dernière intervention
11 novembre 2008
2
Re,

la solution 1 marche moyen et la soluce 2 marche pas du tout.

<?php

$pst =array(1,3);

$voir = array('t','y','py');



foreach ($pst as $clef_voir) {

$voir_new[] = array_splice ($voir, $clef_voir, 1);

}

$voir = array_diff ($voir_new, $voir);



echo $voir[0];

?>

ça affiche array() !!!!!!!



et pour la soluce 2 il dit que array_diff_key n'existe pas.

@+

Immortal-PC,
téléchargements,astuces ,entre-aide informatique , conseils pour vos problèmes d'ordi.
<!--StartFragment -->Grâce à Immortal-PC votre ordinateur p
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
Faut peut-etre ne pas mettre
$voir = array_diff ($voir_new, $voir);

Peut-etre qu'il boucle dans cette fonction, et donc passer par un 3eme tableau.
Ou le array_splice ne va pas.

array_diff_key est une fonction php5.
Mais tu peux inverser alors...si tu n'as pas php 5 :
tu fais un array_flip sur $voir => les clefs et les valeurs seront inversees

et ensuite tu fais un array_diff tout court sur tes 2 tableaux. Cela va faire la difference sur les valeurs, pas sur les clefs.
Ce sera pareil, sauf qu'il te faudra refaire un array_flip sur $voir pour avoir les clefs et les valeurs dans le bon sens.

Tu me suis ?