web-dev-qa-db-fra.com

Créer de nouvelles variables à partir de clés de tableau dans PHP

Supposons que j'ai un tableau, comme ceci:

$foo = array('first' =>  '1st',
             'second' => '2nd',
             'third' =>  '3rd');

Comment puis-je extraire les clés du tableau et en faire leurs propres variables? Par exemple, le tableau $foo deviendrait:

$first = '1st';
$second = '2nd';
$third = '3rd';

Je pose cette question parce que je crée un framework MVC pour aider avec ma POO et je voudrais que l’utilisateur passe une variable à la fonction de chargement de View, ce qui lui permettra d’utiliser des variables dans le modèle sans avoir à connaître le tableau a été appelé.

Par exemple:

$array = array('title' =>  'My blog!' [...]);
$this->load->view('view.php', $array);

view.php:

echo $title;

Sortie:

Mon blog!

45
Derek Maciel
115
KomarSerjio

Vous pourriez faire ceci:

foreach($foo as $k => $v) {
  $$k = $v;
}
22
xil3

Une méthode simple consiste à utiliser des variables variables:

foreach($foo as $key => $value) {
   $$key = $value;
}

echo $first; // '1st'

Notez que ceci est généralement déconseillé cependant. Il serait préférable de modifier votre système de gabarit pour permettre aux variables d'être définies dans le modèle. Sinon, vous pourriez avoir des problèmes avec les collisions et devoir vérifier leur existence, etc.

5
Hamish

C’est vraiment une réponse à ma propre question , mais comme cela a été marqué comme un doublon, il m’a été conseillé de poster ma réponse ici. (Je n'ai pas le privilège de poster en méta.)

Lorsque vous avez une table dans une base de données avec plusieurs colonnes, il peut être fastidieux de créer une variable pour chacune d’elles. Le grand avantage est que vous pouvez créer des variables automatiquement!

Cette méthode utilise l'en-tête/titre/nom des colonnes d'une table de base de données en tant que noms de variables et le contenu de la ligne sélectionnée en tant que valeur des variables. 

Cette approche convient lorsque vous ne sélectionnez que la ligne un du tableau. Mon code avec des commentaires:

$query = "SELECT * FROM mdlm WHERE mdlmnr = $id";  // Select only *one* row, the column mdlmnr is a unique key
$resultat = $conn->query($query); //Get the result (the connection is established earlier)

while ($col = $resultat->fetch_field()) { //fetch information about the columns
    $kolonnetittel = $col->name; //Set the variable as the name of the column
    echo $kolonnetittel . "<br>"; //Show all the column names/variables
}

$innhold = $resultat->fetch_assoc(); // get the content of the selected row as an array (not a multidimensional array!) 
extract($innhold, EXTR_PREFIX_SAME, "wddx"); // Extract the array

Puisque je ne suis pas un pro, le code n'est peut-être pas le meilleur, mais il fonctionne pour moi :-) Lorsque la liste des variables est apparue sur ma page Web, je l'ai copiée dans Excel et utilisée pour concaténer afin de créer php/html/css-code : paragraphes avec classe désignée pour chaque variable. Ensuite, j'ai copié ce code dans le code de ma page Web et déplacé chaque élément. Avant de terminer, j'ai commenté cette ligne:

//echo $kolonnetittel . "<br>"; 

Liens utiles:

J'espère que ce "tutoriel" pourrait aider quelqu'un d'autre!

0
Ingeborg