Если у вас есть массив, который содержит 6 пунктов, в том числе 3 пустых строк:
$arr = array('cat1', 'cat2', 'cat3', '', '', '');
Вы можете implode
те, в строку, таким образом:
echo '"' . implode('","', $arr) . '"';
И вы получите следующий результат:
"cat1","cat2","cat3","","",""
В принципе, implode
позволяет поместить все элементы массива в строку, используя разделитель - здесь, сепаратор ","
который является то, что вы можете между вашими строками.
И, поскольку в результате взлома только разделитель разделится между элементами, мы должны добавить дополнительный номер "
в начале и в конце результирующей строки.
(Надеюсь, я понял, что вы имели в виду ...)
EDIT после комментария:
OK, если $arr
массив не содержит шесть пунктов в начале:
$arr = array('cat1', 'cat2', 'cat3');
возможность может быть создание массива с пустыми элементами; как это, например:
$count = count($arr);
// Create an array with empty elements
$padding = array_fill($count, 6-$count, '');
var_dump($padding);
И, затем, добавить те к $arr
массива:
// Add the empty elements to $arr
$arr = $arr + $padding;
(Вы можете также использовать array_merge
, я полагаю)
И теперь , вернуться к нашему implode
:
echo '"' . implode('","', $arr) . '"';
И на этот раз, вы получите:
"cat1","cat2","cat3","","",""
Вот что var_dump($padding);
дает, для информации:
array
3 => string '' (length=0)
4 => string '' (length=0)
5 => string '' (length=0)
И, да, вы можете использовать +
operator with arrays(цитирую):
оператор +
добавляет элементы оставшиеся ключи от правой руки массив слева, тогда как дублированные ключи НЕ перезаписываются.
Если $arr
может быть больше, чем 6 элементов, вы можете использовать array_slice
, чтобы удалить не-требуемые элементы:
$arr = array('cat1', 'cat2', 'cat3', '', '', '', '');
$arr = array_slice($arr, 0, 6);
echo '"' . implode('","', $arr) . '"';
Привет Паскаль, Спасибо за ваш ответ. Сначала я не получу пустые строки. я мог бы получить: cat1, КАТ2, cat3 или cat1, cat2, cat3, cat4, cat5 В любом случае, мне нужно на выходе быть не более чем на 6 пунктов. – Martin
@ Мартин: Я отредактировал свой ответ с несколькими дополнительными сведениями и примером :-) –