Преобразование массива в строку

Задача
Есть массив, который необходимо конвертировать в хорошо отформатированную строку.

Решение
Используйте функцию join():

// создаем список элементов, разделенных запятыми
$string = join(',', $array);
Или цикл:
$string = '';
foreach ($array as $key => $value) {
$string .= ",$value";
}
$string = substr($string, 1); // удаляем ведущую ","

Обсуждение
Если можно использовать функцию join(), используйте; она работает быстрее, чем любой цикл PHP. Однако функция join() не очень гиб-кая. Во-первых, она помещает разделитель только между переменными, а не вокруг них. Чтобы вставить элементы внутрь HTML-тегов полужирного начертания текста и разделить их запятыми, сделайте следующее:

$left = '';
$right = '
';
$html = $left . join("$right,$left", $html) . $right;

Во-вторых, функция join() не позволяет различать значения между собой. Если необходимо вставить подмножество значений, нужно использовать собственно цикл:

$string = '';
foreach ($fields as $key => $value) {
// не включаем пароль
if ('password' != $key) {
$string .= ",$value";
}
}
$string = substr($string, 1); // удаляем ведущую ","

Обратите внимание, что разделитель всегда добавляется к каждому значению, а затем удаляется вне цикла.


И хотя до некоторой степени расточительно сначала добавлять что-нибудь, а потом это же отнимать, но данный прием более привлекательный и эффективный (в большинстве случаев), чем попытка вставить логику внутрь цикла. То есть:

$string = '';
foreach ($fields as $key => $value) {
// не включаем пароль
if ('password' != $value) {
if (!empty($string)) { $string .= ','; }
$string .= "$value";
}
}

Теперь нужно проверять переменную $string каждый раз, когда добавляется значение. Это хуже, чем простой вызов функции substr(). А также вставлять разделитель (в данном случае запятую) в начало, вместо добавления его, потому что быстрее обрезать строку спереди, чем сзади.

Оцените статью: (0 голосов)
0 5 0

Статьи из раздела PHP на эту тему:
Добавление одного массива к другому
Изменение длины массива
Инициализация массива диапазоном
Инициализация массива диапазоном целых чисел
Нахождение всех перестановок массива

Вернуться в раздел: PHP / 4. Массивы