IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

inter-changer valeurs tableaux [PHP 5.4]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 84
    Par défaut inter-changer valeurs tableaux
    Bonjour, j'ai deux tableaux, un multidimensionnel, et un autre bidimensionel avec le même nombre de valeurs:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
    //first
    array (size=3)
      'debug' => string 'on' (length=2)
      'window' => 
        array (size=4)
          'title' => string 'Sample Konfabulator Widget' (length=26)
          'name' => string 'main_window' (length=11)
          'width' => int 500
          'height' => 
            array (size=2)
              'toto' => string 'tata' (length=4)
              'titi' => 
                array (size=2)
                  ...
      'image' => 
        array (size=5)
          'src' => string 'Images/Sun.png' (length=14)
          'name' => string 'sun1' (length=4)
          'hOffset' => int 250
          'vOffset' => int 250
          'alignment' => string 'center' (length=6)
     
    //second
    array (size=12)
      'debug' => string 'a' (length=1)
      'window/title' => string 'b' (length=1)
      'window/name' => string 'c' (length=1)
      'window/width' => string 'd'  (length=1)
      'window/height/toto' => string 'e' (length=1)
      'window/height/titi/tyty' => string 'f' (length=1)
      'window/height/titi/hihi' => string 'g' (length=1)
      'image/src' => string 'h' (length=1)
      'image/name' => string 'i' (length=1)
      'image/hOffset' => string 'j' (length=1)
      'image/vOffset' => string 'k'  (length=1)
      'image/alignment' => string 'l' (length=1)
    Quelle méthode puis-je utiliser pour remplacer les valeurs du tableau multidimensionnel par celles du bidimensionnel ?

  2. #2
    Membre Expert
    Avatar de Spartacusply
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Par défaut
    Tu "aplatis" ton tableau multidimensionnel, tu applique la fonction array_merge entre les deux tableaux (avec le tableau aplatis en deuxième paramètre) puis tu développes le tableau résultant. Voici une fonction permettant de réaliser cela, extraite du framework CakePhp :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    /**
     * Expands a flat array to a nested array.
     *
     * For example, unflattens an array that was collapsed with `Hash::flatten()`
     * into a multi-dimensional array. So, `array('0.Foo.Bar' => 'Far')` becomes
     * `array(array('Foo' => array('Bar' => 'Far')))`.
     *
     * @param array $data Flattened array
     * @param string $separator The delimiter used
     * @return array
     * @link http://book.cakephp.org/2.0/en/core-utility-libraries/hash.html#Hash::expand
     */
    	public static function expand($data, $separator = '.') {
    		$result = array();
     
    		$stack = array();
     
    		foreach ($data as $flat => $value) {
    			$keys = explode($separator, $flat);
    			$keys = array_reverse($keys);
    			$child = array(
    				$keys[0] => $value
    			);
    			array_shift($keys);
    			foreach ($keys as $k) {
    				$child = array(
    					$k => $child
    				);
    			}
     
    			$stack[] = array($child, &$result);
     
    			while (!empty($stack)) {
    				foreach ($stack as $curKey => &$curMerge) {
    					foreach ($curMerge[0] as $key => &$val) {
    						if (!empty($curMerge[1][$key]) && (array)$curMerge[1][$key] === $curMerge[1][$key] && (array)$val === $val) {
    							$stack[] = array(&$val, &$curMerge[1][$key]);
    						} elseif ((int)$key === $key && isset($curMerge[1][$key])) {
    							$curMerge[1][] = $val;
    						} else {
    							$curMerge[1][$key] = $val;
    						}
    					}
    					unset($stack[$curKey]);
    				}
    				unset($curMerge);
    			}
    		}
    		return $result;
    	}

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 84
    Par défaut

    j'ai gratté une 20aines de pages sans réussir xd
    tu m'as encore bien débloqué, ça marche impec merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. changer valeur select onclick
    Par zevince dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 14/02/2007, 14h27
  2. [debutant] changer valeur d'un tableau
    Par Emcy dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 29/11/2006, 08h31
  3. Changer valeur d un lien javascript
    Par stephane92400 dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 13/07/2006, 18h44
  4. changer valeur input a la volée
    Par epeichette dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 19/05/2006, 11h05
  5. changer valeur du onsubmit ?
    Par elenel dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 25/08/2005, 10h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo