关于数组的php问题

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)

这有意义吗?

谢谢马丁

Pas*_*TIN 6

如果您有一个包含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)