Tableau multi-dimmension: recupérer clé

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Tableau multi-dimmension: recupérer clé

Re: Tableau multi-dimmension: recupérer clé

par gui » 29 mars 2010, 14:53

C'est bon ca marche merci beaucoup pour la grande patience dont tu as fait preuve pour la suite je vais me débrouiller.
Encore merci pour tout.

Re: Tableau multi-dimmension: recupérer clé

par stealth35 » 29 mars 2010, 14:42

donc apres
$test->execute();
//fais
print_r($test->tab);

Re: Tableau multi-dimmension: recupérer clé

par gui » 29 mars 2010, 14:41

Oui comme tu dis l'appel de la premiere fonction execute se fait dans un index

<?php

ini_set ('max_execution_time', 0); // Aucune limite d'execution
require_once("./selection.php");  

 $test=new selection();

 $test->execute();

 


?>		




Mais normalement ca ne devrai pas ecraser mes valeur présedente, c'est pourquois je veux utiliser un tableau, j'ai deja fait ce genre de chose avec un tableau classique et ca n'enregistre pas par-dessus mais au se rajoute au fur et à mesure dans le tableau.

Re: Tableau multi-dimmension: recupérer clé

par stealth35 » 29 mars 2010, 14:20

en plus tu fais
$this->subsequence($sequence)
a chaque apelle ca va écraser ta valeur

Re: Tableau multi-dimmension: recupérer clé

par stealth35 » 29 mars 2010, 14:17

mais non, a un moment dans ton code PHP tu fais bien
$selection = new Selection();
$selection->execute();

Re: Tableau multi-dimmension: recupérer clé

par gui » 29 mars 2010, 14:15

L'appel des fonctions se fait au sein de la classe

Re: Tableau multi-dimmension: recupérer clé

par stealth35 » 29 mars 2010, 14:06

et ton apelle tu le fait ou y'a que la class la

Re: Tableau multi-dimmension: recupérer clé

par gui » 29 mars 2010, 14:03


class selection {
public function __construct($way="/home/guillaume/Desktop/Seq-matrice/sequences.fasta") {

		$this->way=$way;

		$this->b=10;
		$this->tab = array();
		//$this->i=0;
}
public function execute() {
				

		if(file_exists($this->way)) {                              

			$lignes= file ($this->way); 
			                         

			//print_r($lignes);

			$cpt=0;                                                

			foreach($lignes as $ligne) {                           

				if(strpos($ligne,'>')!== false){
										

					if($cpt>0) {
					

						echo "$sequence<br \>";
						$sequence=trim($sequence," "); 

						$this->subsequence($sequence);   // L'appel se fait à ce niveau
						$sequence="";
						
               

					}
					$this->id=$ligne;

					$sequence="";

					$cpt++;

				}
				else{
				
					$sequence.=$ligne;  

					$sequence=trim($sequence);
				}

				

			}

			if($sequence!="") {     
				echo "$sequence<br \>"; 
				echo "$this->id<br \>";	
				#echo "$sequence<br \>";	
				$this->subsequence($sequence);
   //Ou bien à ce niveau
			}

		}
		else {   
			die("impossible d'ouvrir le fichier FASTA");

			

		}

	}

	public function subsequence($sequence) {

		$arr=array();
		$jen="/home/guillaume/Desktop/Seq-matrice/data.fasta";
		$pro=fopen($jen,"w+");
		fwrite($pro,$this->id);
		fwrite($pro,$sequence."\n");
		fclose($pro);
		chmod($jen,0777);

		for($a=0;$a<=strlen($sequence)-$this->b;$a++){                       

			$this->files=substr($sequence,$a,$this->b);

           		$align=array(0=>$this->files);	

		
			//print_r($align);  

	
			#msf

			$msa=new Msa($align);
			$msa->toMSF("/opt/lampp/htdocs/profils/test.msa");
		

			$file="/opt/lampp/htdocs/profils/test.msa";
			
			$msf=file_get_contents("$file");
				
		
			#pfmake

			$pfmake=new pfMake($file);			

			$pfmake->setAlignmentMode(-1);

			$pfmake->setLinearMode();

			$pfmake->execute();

			

					

			$pfmake->autoscale($db=0);

			$prf=$pfmake->getProfile();
			//echo $prf;
			$profil=file_get_contents("$prf");			
			#echo $profil;
		

			

			#  pfsearch
			$pfsearch=new pfSearch($prf,$jen);

			$pfsearch->execute();
			$pr=$pfsearch->getResult();

			#$prr=$pfsearch=file_get_contents($pr);
			#echo $pr;
				
			$this->tab[$this->i]=array ($msf,$profil,$pr);     // Voilà donc le tableau récapitulatif avec ou sans $this->i c'est la même
			print_r ($this->tab);
			//$this->i++;                                

		}
		
		#Recherche séquence significative
		$score=new score();
		$score->execute();
		$mx=$score->getResult();
				
		#Renvoie clé de $mx (valeur maximale)
		function recursive_array_search($needle,$haystack) {
    			foreach($haystack as $key=>$value) {
       			 $current_key=$key;
        			if($needle===$value OR (is_array($value) && recursive_array_search($needle,$value))) {
			  	  return $current_key;
				}
		    	}
		return false ;  // A ce niveau le script me retoune "false"
		}
		$found = recursive_array_search($mx,$tab);
		var_dump($found);
 
	

		
	}
}

Re: Tableau multi-dimmension: recupérer clé

par stealth35 » 29 mars 2010, 13:50

comment se fait ton apelle de la class, montre plus de code

Re: Tableau multi-dimmension: recupérer clé

par gui » 29 mars 2010, 13:48

En le mettant ou pas, le resultat est le même : toujours Array ( [0] => Array ( [0] =>....
J'avais mis le this->i pour voir si cela fonctionnerai, pourtatn le $i lui marche parfaitement est me renvoie avec echo des valeur croissante toujours différentes, je ne voie donc pas pourquois lorsque je met
$this->tab[$this->i]=array ($msf,$profil,$pr);   

ou
 $this->tab[]=array ($msf,$profil,$pr);
Se qui devrait revenir au même je n'ai toujours pas d'incrémentation je commence à me demmander si cela est possible dans un tableau à plusieur dimmension??

Re: Tableau multi-dimmension: recupérer clé

par stealth35 » 29 mars 2010, 13:35

ton $i ca sert a rien
$this->tab[]=array  ($msf,$profil,$pr);

Re: Tableau multi-dimmension: recupérer clé

par gui » 29 mars 2010, 12:17

Alors
J'ai déclaré dans
   

       public function __construct() {

		$this->tab = array();
		$this->i=0;

Que j'ai appelé dans la fonction subsequence

                       $this->tab[$this->i]=array ($msf,$profil,$pr);
			print_r ($this->tab);
			$this->i++;

Il n'y a pas de message d'erreur mais l'incrémentation reste toujour de 0 pour $tab, j'avais le même problème précédament en mettant $tab[$a], au lieu de me mettre les valeurs de $a en clé de $tab, il n'y avait que des 0.
Je ne voie pas d'ou peut venir le problème.

Re: Tableau multi-dimmension: recupérer clé

par gui » 29 mars 2010, 11:17

Ok merci beaucoup je regarde

Re: Tableau multi-dimmension: recupérer clé

par stealth35 » 29 mars 2010, 11:16

tu fait un

public $tab = array();


pour l'apeller c'est
$this->tab

Re: Tableau multi-dimmension: recupérer clé

par gui » 29 mars 2010, 11:06

je le déclare donc au niveau de public function __construct?
Avec $tab[];
Le problème est pour l'apeller non?