2009-09-26 10 views
14

Helo,

ho il seguente array

$appArray=array('a', 'b', 'c'); 

Voglio produrre un output, come 'a\nb\nc\n'. Il guaio è che quando uso

implode('\n', $appArray) 

ottengo 'a\\nb\\nc\\n' (notare il backslash extra).

Qualche idea su come risolvere questo problema?

risposta

47

Sei sicuro di non aver intenzione: implode("\n", $appArray)? I caratteri di nuova riga non vengono effettivamente trattati come caratteri di nuova riga quando sono racchiusi tra virgolette singole.

+1

sarò pazzo, ho usato apostrofo, che non è stato funzionato fino a quando ho visto il tuo post. –

+0

salvato il giorno .. grazie mille – zeetit

3

In realtà, in virgolette singole \ n significa \ n (letteralmente), non ritorno a capo. Prova a usare le virgolette in implode().

3

Provare a racchiudere lo \n tra virgolette.

Sembra che vengano interpretati come due caratteri: una barra rovesciata e una 'n', e il backslash è sfuggito con un'altra barra rovesciata.

0

Puoi provare questo.

$selected = implode(",\n", preg_replace('/^(.*?)$/', "'$1'", $filters['selected_model'])); 


SELECT DISTINCT(D.model_id) AS MODEL_ID, COUNT(*) AS viewCount, t.title FROM download_logs AS D LEFT JOIN templates AS t ON D.model_id = t.id 
     WHERE D.model_type IN ('.$selected.') GROUP BY D.model_id 
6

Usa PHP_EOL (capolinea):

implode(PHP_EOL, $array);