Page 1 sur 1

Supprimer des valeurs d'un Array

Posté : 05 mars 2010, 21:02
par visualight
Bonjour,

Je désirerai récupérer un index de l'array par rapport à son titre et supprimer des valeurs après cet index ... mais pas toutes les valeurs !
En effet, je désirerai supprimer les valeurs se situant après un index définis (d'où l'intérêt de pouvoir récupérer l'index pour savoir après lequel on doit supprimer)

Exemple array :

Array (
[0] => Array ( [0] => test [1] => 1 )
[1] => Array ( [0] => test 1 [1] => 8 )
[2] => Array ( [0] => test 2 [1] => 4 )
[3] => Array ( [0] => test 3 [1] => 5 )
[4] => Array ( [0] => test 4 [1] => 6 )
[5] => Array ( [0] => test 5 [1] => 7 )
)

Je désirerai récupérer l'index principal par rapport à son titre (exemple : si le titre = test2, on isole l'index [2])
Après, je désirerai supprimer tous le contenu de l'array APRES l'index [2] ==> DONC, supprimer index [3 à 5].

J'ai regardé un peu partout sur le net mais je n'ai rien trouvé. De plus, je ne sais pas si la méthode décrite est la bonne pour faire ce que je dois faire (mais le principe y est).

Avez vous une idée de comment faire ?

Merci,
raph

Re: Supprimer des valeurs d'un Array

Posté : 06 mars 2010, 10:07
par Calimero
Bonjour,

C'est typiquement le genre d'opération pour lesquelles on envisage l'utilisation d'une base de données.

D'une manière générale, quand tu ne sais pas comment faire quelquechose, commence déjà par regarder ce que tu peux faire, ça donne souvent des idées ;)

La liste des fonctions de manipulation de tableaux de PHP (très pratique à connaître, au demeurant) : http://fr2.php.net/manual/fr/ref.array.php

Pour ton souci, tu peux y arriver assez facilement, en découpant ton "gros" problème en plusieurs petits sous-problèmes :

- identifier une valeur par son titre (et retourner l'index correspondant) : array_search(), in_array(), fonction maison basée sur une boucle de recherche (foreach + return)

- effacement d'un nombre de lignes déterminé du tableau à partir d'un index donné : array_splice()

Re: Supprimer des valeurs d'un Array

Posté : 06 mars 2010, 14:41
par visualight
Bonjour,

J'ai trouvé un code qui fait en sorte de retrouver un INDEX PRIMAIRE par rapport à un texte donné (se situant dans l'array) :
http://fr2.php.net/manual/fr/function.a ... .php#92991

Mais sil ne fonctionne pas ... pourtant, c'est bien ça qu'il me faut.
$array = array (
"shoes" => array("test1"=> "123","test2"=>"1234","test3"=>"12345"),
"shoes2"=> array("test1"=>"324","test2"=>"3515","test3"=>"123131")
);
array_search_value("123",$array,"test1"); // would return shoes

Voici le code que la personne fournis :
function array_search_value($needle,$haystack,$arraykey=FALSE) {
    foreach($haystack as $key=>$value) {
        $current_key=$key;

        if($arraykey){
           
            if($needle == $value[$arraykey]){
            return 'value1'.$value['id'];
            }
           
            if(array_search_value($needle,$value[$arraykey]) == true) {
            return 'value2'.$current_key;
            }
           
        }else{
           
            if($needle == $value)
            return 'value3'.$value;
           
            if(array_search_value($needle,$value) == true) {
                return 'value4'.$current_key;
            }
           
           
        }
       
       
    }
    return false;
}

Quand je fais un echo ou print_r de : array_search_value("123",$array,"test1");, il ne me renvoie rien mis à part : "value1" alors qu'il devrait renvoyer "shoes". (C'est moi qui ai rajouté value1, value2 ... dans la fonction (pour avoir un retour même si vide)).

Avez-vous une idée , j'en ai vraiment besoin.

Merci,
raph

Re: Supprimer des valeurs d'un Array

Posté : 06 mars 2010, 15:12
par Calimero
Bonjour,

Ce code est foireux et comme il n'est même pas de toi (et inutilement compliqué) je ne souhaite pas t'aider à le corriger. L'idée n'était pas que tu te jettes sur le premier code qui passe mais que tu fasses le tien pour l'apprentissage à l'aide des indications que je t'ai fournies (tu en as pour 10 minutes en prenant tout ton temps).

Si tu as du mal je t'y aiderai.

Re: Supprimer des valeurs d'un Array

Posté : 06 mars 2010, 18:13
par visualight
Oui en effet, c'est assez foireux comme méthode.
J'ai fait cette fonction me permettant de récupérer l'index primaire d'un array multidimentionnel par rapport à une valeur de l'array.

En effet, si dans mon array, j'ai une valeur : administration et que administration et regroupée dans un array principal avec l'index 0, cette fonction permet de retrouver et récupérer l'index principal (dans ce cas, 0).

Exemple array :

Code : Tout sélectionner

Array ( [0] => Array ( [0] => administration [1] => 1 ) [1] => Array ( [0] => titre page 1 [1] => 8 ) [2] => Array ( [0] => titre page 2 [1] => 4 ) [3] => Array ( [0] => titre page 3 [1] => 5 ) [4] => Array ( [0] => titre page 4 [1] => 6 ) [5] => Array ( [0] => titre page 5 [1] => 7 ) )
// Fonction pour le QuickNav permettant de récupérer un index primaire d'un array multi-dimentionnel
		function IndexSearch ($search_item,$array) {
			foreach($array as $key=>$value) {
			 $default_key=$key;
				if($search_item===$value OR (is_array($value) && IndexSearch($search_item,$value) !== false)) {
				 return $default_key;
				}
			}
		 return false;
		}
Ensuite, je peux supprimer avec array_splice :
// $title proviens de la base de donnée et mon array est en session
// On Teste l'index parent de l'array par rapport à un titre donné et on rajoute 1 pour ne pas se supprimer sois-même et puis on supprime le reste.
	 $CurrentID = IndexSearch($title,$_SESSION ['quicknav']) +1;
	 array_splice($_SESSION ['quicknav'], $CurrentID);

Ca marche nickel !
Merci pour ton aide Calimero ;)

Re: Supprimer des valeurs d'un Array

Posté : 06 mars 2010, 18:15
par Calimero
T'es un chef, bravo ;)

Content d'avoir pu t'aider :D . @+

Re: Supprimer des valeurs d'un base de donnée

Posté : 13 mai 2010, 12:43
par zinouba
je veut supprimer des enregistrement d'un base de données,je veut savoir une fonction php qui permet de supprimer un ou +enregistrements