题
我是(完整的)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","","",""
即使何时起作用 $org
有 6
或更少的猫:
如果 $org = "Cat1","Cat2","Cat3","cat4","cat5"
$str
将会 "Cat1","Cat2","Cat3","cat4","cat5",""