Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

FONCTION TRANSFORMER UN TABLEAU EN OBJET


Description

Bon, honnêtement, je n'ai pas encore trouvé d'utilité à cette fonction, mais je l'ai codé, donc autant en faire profiter les autres !
Donc c'est simple, vous avez un tableau du style:

array('test1' => 'valeur', 'test2', 'test3' => array(1, 3))

j'ai fait exprès de faire des types de clé différentes... La fonction gère les tableaux multidimensionnels.

pour obtenir un objet, il suffit d'écrire:

$objet = array_to_object($tableau, 'nomdelaclasse');

si vous aviez une valeur d'enregistrée sous $tableau['key'], elle sera accessible par $objet->key

$tableau contient le tableau source et 'nomdelaclasse' est le nom de la classe permettant la construction de l'objet.
Attention, si vous avez des clès de tableau numérique comme $tableau[2], elle ne sera pas ajoutée a l'objet, (car $tableau->2, c'est invalide !) sauf si vous définissez un 3e argument:

$objet = array_to_object($tableau, 'nomdelaclasse', '_');

le 3e argument est un préfixe. En utilisant cette méthode, $tableau[2] donnera $objet->_2 (et ça c'est valide!)

Voilà, au bonheur de celui qui en aura trouvé une utilité interressante ;)
 

Source

  • <?php
  • #
  • # Written by Jérémy FAIVRE (docteur.night) docteurnight@hotmail.com
  • #
  • function array_to_object($array, $class_name, $numbers = false)
  • {
  • if ( is_array($array) && count($array) > 0 )
  • {
  • $var_names = array();
  • $var_values = array();
  • foreach ( $array as $key => $value )
  • {
  • if ( !is_numeric($key) )
  • {
  • $value = serialize($value);
  • $var_names[] = '$' . $key;
  • $var_values[] = '$this->' . $key . ' = unserialize(\'' . $value . '\');';
  • }
  • elseif ( $numbers != false )
  • {
  • $value = serialize($value);
  • $var_names[] = '$' . $numbers . $key;
  • $var_values[] = '$this->' . $numbers . $key . ' = unserialize(\'' . $value . '\');';
  • }
  • }
  • eval('class ' . $class_name . ' {' . "\n" . 'var ' . implode(', ', $var_names) . ';' . "\n" . 'function ' . $class_name . '() {' . "\n" . implode("\n", $var_values) . "\n" . '}' . "\n" . '}' . "\n" . '$object = new ' . $class_name . ';');
  • return $object;
  • }
  • else
  • {
  • return false;
  • }
  • }
  • ?>
<?php

#
# Written by Jérémy FAIVRE (docteur.night) docteurnight@hotmail.com
#

function array_to_object($array, $class_name, $numbers = false)
{

	if ( is_array($array) && count($array) > 0 )
	{

		$var_names = array();
		$var_values = array();

		foreach ( $array as $key => $value )
		{

			if ( !is_numeric($key) )
			{

				$value = serialize($value);

				$var_names[] = '$' . $key;
				$var_values[] = '$this->' . $key . ' = unserialize(\'' . $value . '\');';

			}
			elseif ( $numbers != false )
			{

				$value = serialize($value);

				$var_names[] = '$' . $numbers . $key;
				$var_values[] = '$this->' . $numbers . $key . ' = unserialize(\'' . $value . '\');';

			}

		}

		eval('class ' . $class_name . ' {' . "\n" . 'var ' . implode(', ', $var_names) . ';' . "\n" . 'function ' . $class_name . '() {' . "\n" . implode("\n", $var_values) . "\n" . '}' . "\n" . '}' . "\n" . '$object = new ' . $class_name . ';');

		return $object;

	}
	else
	{

		return false;

	}

}

?>

Commentaires et avis

signaler à un administrateur
Commentaire de drnight le 11/04/2005 14:13:31

Bon apparement il existe la fonction settype de php qui fait la même chose alors.... au temps pour moi !

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Septembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
2930     

Consulter la suite du CalendriCode



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,33 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.