Array

Résolu
ImmortalPC Messages postés 954 Date d'inscription mardi 11 mai 2004 Statut Membre Dernière intervention 11 novembre 2008 - 22 juin 2005 à 20:18
ImmortalPC Messages postés 954 Date d'inscription mardi 11 mai 2004 Statut Membre Dernière intervention 11 novembre 2008 - 23 juin 2005 à 14:16
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

ImmortalPC Messages postés 954 Date d'inscription mardi 11 mai 2004 Statut Membre Dernière intervention 11 novembre 2008 2
23 juin 2005 à 14:16
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.
3
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
23 juin 2005 à 08:07
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);
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
23 juin 2005 à 08:07
Pour une fois j'ai pige du 1er coup ;-)
0
ImmortalPC Messages postés 954 Date d'inscription mardi 11 mai 2004 Statut Membre Dernière intervention 11 novembre 2008 2
23 juin 2005 à 10:38
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ImmortalPC Messages postés 954 Date d'inscription mardi 11 mai 2004 Statut Membre Dernière intervention 11 novembre 2008 2
23 juin 2005 à 10:48
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
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
23 juin 2005 à 11:19
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 ?
0
Rejoignez-nous