Domanda

Come stampare il contenuto array in un file di log in Magento CE 1.7 senza l'iterazione attraverso un ciclo?

È stato utile?

Soluzione

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

L'aggiunta di un secondo parametro di print_r restituirà una stringa variabile stampata. < br> [EDIT]
sulla base dei commenti qui sotto mi sento obbligato ad offrire altre opzioni per la registrazione di un array.

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

o se avete bisogno di un prefisso di stringa alla matrice

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

Il secondo parametro di Zend_Debug::dump() è un'etichetta. Se questo non è null verrà aggiunto a prima della discarica array.
Il terzo parametro di Zend_Debug::dump() significa echo. Se sarà eco di essa la true allora il risultato discarica, se è false verrà restituito sotto forma di stringa. Nel tuo caso è necessario che sia false.

Altri suggerimenti

Hai provato a fare proprio:

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

metodo log Mage dovrebbe espandere l'array è di per sé.

Come Petar sottolineato, è espanso, quindi se è un array o un oggetto, non c'è print_r necessario. Ma se lo si miscela, come:

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

si ottiene un problema, perché phps array per mezzo di conversione di stringhe:

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

e con un oggetto, cerca php per chiamare il metodo __toString se questo non esiste, viene generato un errore (credo).

E per riferimento, 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) {
    }
}

Niente testato: -)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a magento.stackexchange
scroll top