PHP: implode ('\n', $appArray) генерирует дополнительные '\'

Helo,

У меня есть следующий массив

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

Я хочу создать вывод, например 'a\nb\nc\n'. Проблема в том, что когда я использую

implode('\n', $appArray)

Я получаю 'a\\nb\\nc\\n' (обратите внимание на дополнительную обратную косую черту).

Любая идея, как это исправить?

Ответы

Ответ 1

Вы уверены, что не собираетесь: implode("\n", $appArray)? Символы новой строки на самом деле не считаются символами новой строки при инкапсуляции в "одиночные кавычки".

Ответ 2

Используйте PHP_EOL (конец строки):

implode(PHP_EOL, $array);

Ответ 3

Собственно, в одинарных кавычках \n означает\n (буквально), а не возврат каретки. Попробуйте использовать двойные кавычки в implode().

Ответ 4

Попробуйте включить \n в двойных кавычках.

Похоже, они интерпретируются как два символа: обратная косая черта и "n", а обратная косая черта сбегает с другой обратной косой чертой.

Ответ 5

Вы можете попробовать это.

  $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