1 php
我是一个(完整的)PHP菜鸟,需要一些帮助.
我正在开发一个项目,用户可以通过表单选择最多6个类别(我正在使用ExpressionEngine).输出是这样的:
"Cat1","Cat2","Cat3"
Run Code Online (Sandbox Code Playgroud)
...等等.用户最多可以在该表单上选择6个类别.
我需要的是:即使我的结果是3个类别,我需要有6个'单元' - 因为想要更好的单词 - 即使它们是空的:
"Cat1","Cat2","Cat3","","",""
Run Code Online (Sandbox Code Playgroud)
我试过这个:
<?php
$str = '(output goes here)';
print_r(explode(',', $str, 6));
?>
Run Code Online (Sandbox Code Playgroud)
......但是输出给了我:
Array
(
[0] => Cat1
[1] => Cat2
[2] => Cat3
[3] =>
[4] =>
[5] =>
Run Code Online (Sandbox Code Playgroud)
)
我如何从中得到:
"Cat1","Cat2","Cat3","","",""
Run Code Online (Sandbox Code Playgroud)
这有意义吗?
谢谢马丁
如果您有一个包含6个项目的数组,包括3个空字符串:
$arr = array('cat1', 'cat2', 'cat3', '', '', '');
Run Code Online (Sandbox Code Playgroud)
你可以将implode这些变为字符串,这样:
echo '"' . implode('","', $arr) . '"';
Run Code Online (Sandbox Code Playgroud)
你会得到以下输出:
"cat1","cat2","cat3","","",""
Run Code Online (Sandbox Code Playgroud)
基本上,implode允许您使用分隔符将数组的所有项目放入字符串 - 这里,分隔符就是","您在字符串之间的内容.
而且,由于implode只将分隔符放在元素之间,我们必须"在结果字符串的开头和结尾添加一个额外的内容.
(希望我明白你的意思......)
评论后编辑:
好的,如果您的$arr数组在开头不包含六个项目:
$arr = array('cat1', 'cat2', 'cat3');
Run Code Online (Sandbox Code Playgroud)
可能的方法是创建一个包含空元素的数组; 像这样,例如:
$count = count($arr);
// Create an array with empty elements
$padding = array_fill($count, 6-$count, '');
var_dump($padding);
Run Code Online (Sandbox Code Playgroud)
然后,将它们添加到$arr数组中:
// Add the empty elements to $arr
$arr = $arr + $padding;
Run Code Online (Sandbox Code Playgroud)
(你也可以使用array_merge,我想)
现在,回到我们的implode:
echo '"' . implode('","', $arr) . '"';
Run Code Online (Sandbox Code Playgroud)
而且,这一次,你会得到:
"cat1","cat2","cat3","","",""
Run Code Online (Sandbox Code Playgroud)
以下是var_dump($padding);给出的信息:
array
3 => string '' (length=0)
4 => string '' (length=0)
5 => string '' (length=0)
Run Code Online (Sandbox Code Playgroud)
并且,是的,您可以将+运算符与数组一起使用 (引用):
的
+操作者追加剩余键元件从右手阵列递给左边,但是重复的键值不会被覆盖.
如果您的$arr长度超过6个元素,则可以使用array_slice删除不需要的元素:
$arr = array('cat1', 'cat2', 'cat3', '', '', '', '');
$arr = array_slice($arr, 0, 6);
echo '"' . implode('","', $arr) . '"';
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
87 次 |
| 最近记录: |