Question

Comment imprimer le contenu du tableau dans un fichier journal dans magento CE 1.7 sans itérer une boucle?

Était-ce utile?

La solution

Mage::log(print_r($arr, 1), null, 'logfile.log');

Ajout d'un second paramètre à print_r retourne une chaîne contenant variables imprimées. < br> [EDIT] sur la base des commentaires ci-dessous je me sens obligé d'offrir d'autres options pour l'enregistrement d'un tableau.

Mage::log($arr, null, 'logfile.log');

ou si vous avez besoin d'un préfixe de chaîne au tableau

Mage::log('prefix'.Zend_Debug::dump($arr, null, false), null, 'logfile.log');

Le second paramètre de Zend_Debug::dump() est une étiquette. Si cela est null pas, il sera ajouté à la décharge avant de tableau.
Le troisième paramètre de Zend_Debug::dump() signifie echo. Si elle est true alors le résultat de vidage sera repris, si elle est false il sera retourné comme une chaîne. Dans votre cas, vous avez besoin d'être false.

Autres conseils

Avez-vous essayé de le faire:

Mage::log($array, null, 'logfile.log', true);

méthode Mage journal devrait élargir le tableau en lui-même.

Petar a souligné, il est détendu, donc si elle est un tableau ou un objet, il n'y a pas print_r nécessaire. Mais si vous mélangez, comme:

Mage::log('my string' . $array);

vous obtenez un problème, car tableau phps moyens de conversion de chaîne:

array(... whatever...) -> 'String'

Et avec un objet, PHP tente d'appeler la méthode __toString si cela n'existe pas, une erreur est renvoyée (je pense).

Et pour référence, Mage::log():

\Mage::log
/app/Mage.php:784
public static function log($message, $level = null, $file = '', $forceLog = false)
{
    // ...
    // initialize ... blah stuff...
    // check wether logging is on, developer mode or logging is forced

    try {
        // get the file, define the format... more stuff ... blah ...

        if (is_array($message) || is_object($message)) {
            $message = print_r($message, true);
        }

        $loggers[$file]->log($message, $level);
    }
    catch (Exception $e) {
    }
}

Rien testé: -)

Licencié sous: CC-BY-SA avec attribution
Non affilié à magento.stackexchange
scroll top