我是(完整的)PHP菜鸟,需要一些帮助。

我正在研究一个项目,用户可以通过表单(我正在使用ExpressionEngine)选择多达6个类别。输出就是这样:

"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","","",""

即使何时起作用 $org6 或更少的猫:

如果 $org = "Cat1","Cat2","Cat3","cat4","cat5"

$str 将会 "Cat1","Cat2","Cat3","cat4","cat5",""

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top