Вопрос

Я (полный) PHP NOOB, и мне нужно что -то помочь.

Я работаю над проектом, в котором пользователь может выбрать до 6 категорий через форму (я использую ExpressEngine). Вывод такой:

"Cat1","Cat2","Cat3"

...и так далее. Пользователь может выбрать до 6 категорий в этой форме.

Что мне нужно: даже если мой результат - 3 категории, мне нужно иметь 6 «ячейки» - из -за отсутствия лучшего слова - даже если они пусты:

"Cat1","Cat2","Cat3","","",""

Я пробовал это:

<?php
$str = '(output goes here)';
print_r(explode(',', $str, 6));
?>

... но выход дает мне:

Array
(
[0] => Cat1
[1] => Cat2
[2] => Cat3
[3] =>
[4] =>
[5] =>

)

Как мне добраться от этого к этому:

"Cat1","Cat2","Cat3","","",""

Имеет ли это смысл?

Спасибо, Мартин

Нет правильного решения

Другие советы

Если у вас есть массив, который содержит 6 предметов, в том числе 3 пустых строк:

$arr = array('cat1', 'cat2', 'cat3', '', '', '');

Вы можете implode они в строке, таким образом:

echo '"' . implode('","', $arr) . '"';

И вы получите следующий вывод:

"cat1","cat2","cat3","","",""


В принципе, implode Позволяет вам помещать все элементы массива в строку, используя сепаратор - здесь сепаратор "," Что вы можете между своими строками.

И, поскольку взорвать только разделитель между элементами, мы должны положить дополнение " в начале и в конце полученной строки.


(Надеюсь, я понял, что ты имел в виду ...)



Изменить после комментария:

Хорошо, если ты $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)

И да, вы можете использовать + оператор с массивами (цитируя) :

А + Оператор добавляет элементы оставшихся клавиш из правого массива в левую руку, тогда как дублированные клавиши не перезаписываются.


Если твой $arr может быть длиннее 6 элементов, вы можете использовать array_slice Чтобы удалить необычные элементы:

$arr = array('cat1', 'cat2', 'cat3', '', '', '', '');
$arr = array_slice($arr, 0, 6);
echo '"' . implode('","', $arr) . '"';

Можешь попробовать:

$org = '"Cat1","Cat2","Cat3"';
$arr = explode(',',$org);
$arr = array_merge($arr,array_fill(count($arr),6-count($arr),'""'));
$str = implode(',',$arr);
echo($str); // prints "Cat1","Cat2","Cat3","","",""

Работает даже когда $org имеет 6 или меньше кошек:

Если $org = "Cat1","Cat2","Cat3","cat4","cat5"

$str будет "Cat1","Cat2","Cat3","cat4","cat5",""

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top