关于数组的php问题

关于数组的php问题,php,Php,我是个彻头彻尾的php高手,需要一些帮助 我正在做一个项目,用户可以通过我使用的ExpressionEngine表单选择多达6个类别。输出如下: "Cat1","Cat2","Cat3" ……等等。用户最多可以在该表单上选择6个类别 我需要的:即使我的结果是3个类别,我也需要6个“单元格”-因为缺少更好的词-即使它们是空的: "Cat1","Cat2","Cat3","","","" 我试过这个: <?php $str = '(output goes here)'; print_r(e

我是个彻头彻尾的php高手,需要一些帮助

我正在做一个项目,用户可以通过我使用的ExpressionEngine表单选择多达6个类别。输出如下:

"Cat1","Cat2","Cat3"
……等等。用户最多可以在该表单上选择6个类别

我需要的:即使我的结果是3个类别,我也需要6个“单元格”-因为缺少更好的词-即使它们是空的:

"Cat1","Cat2","Cat3","","",""
我试过这个:

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

我该如何从这一点到这一点:

"Cat1","Cat2","Cat3","","",""
这有意义吗

谢谢
Martin

如果数组包含6项,包括3个空字符串:

$arr = array('cat1', 'cat2', 'cat3', '', '', '');
您可以通过以下方式将其转换为字符串:

echo '"' . implode('","', $arr) . '"';
您将获得以下输出:

"cat1","cat2","cat3","","",""
基本上,内爆允许您使用分隔符将数组的所有项放入一个字符串中-这里,分隔符是,这是您可以在字符串之间使用的分隔符

而且,由于内爆只在元素之间放置分隔符,因此我们必须在结果字符串的开头和结尾放置additionnal

希望我明白你的意思

在评论后编辑:

好的,如果$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数组中:

我想你也可以用

现在,回到我们的内爆:

这一次,您将再次获得:

"cat1","cat2","cat3","","",""
下面是var_dump$padding的内容;提供以下信息:

array
  3 => string '' (length=0)
  4 => string '' (length=0)
  5 => string '' (length=0)
是的,您可以使用以下引用:

+运算符附加 右手的剩余钥匙 数组位于左手边,而 重复的密钥不会被覆盖

如果$arr的长度可能超过6个元素,则可以使用删除不需要的元素:

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

如果数组包含6项,包括3个空字符串:

$arr = array('cat1', 'cat2', 'cat3', '', '', '');
您可以通过以下方式将其转换为字符串:

echo '"' . implode('","', $arr) . '"';
您将获得以下输出:

"cat1","cat2","cat3","","",""
基本上,内爆允许您使用分隔符将数组的所有项放入一个字符串中-这里,分隔符是,这是您可以在字符串之间使用的分隔符

而且,由于内爆只在元素之间放置分隔符,因此我们必须在结果字符串的开头和结尾放置additionnal

希望我明白你的意思

在评论后编辑:

好的,如果$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数组中:

我想你也可以用

现在,回到我们的内爆:

这一次,您将再次获得:

"cat1","cat2","cat3","","",""
下面是var_dump$padding的内容;提供以下信息:

array
  3 => string '' (length=0)
  4 => string '' (length=0)
  5 => string '' (length=0)
是的,您可以使用以下引用:

+运算符附加 右手的剩余钥匙 数组位于左手边,而 重复的密钥不会被覆盖

如果$arr的长度可能超过6个元素,则可以使用删除不需要的元素:

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

您可以尝试:

$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、

你好,帕斯卡,谢谢你的回答。一开始我不会得到空字符串。我可能会得到:cat1、cat2、cat3或cat1、cat2、cat3、cat4、cat5,无论哪种情况,我都需要输出不超过6项。@马丁:我已经用一些附加信息和示例编辑了我的答案:-嗨,帕斯卡,谢谢你的回答。一开始我不会得到空字符串。我可能会得到:cat1、cat2、cat3或cat1、cat2、cat3、cat4、cat5,无论哪种情况,我都需要输出不超过6项。@马丁:我已经用一些附加信息和示例编辑了我的答案:-@codaaaddit非常感谢。这是最接近于工作的东西。然而,如果我的初始结果大于4个类别,我就根本得不到任何结果。如果少于6个类别,则会得到任何结果。马丁:它对6个人也很管用。当有6只猫时,计算$arr将为6。因此6-6将是0,因此实际上原始字符串将保持不变。这是预期的结果。@codaaddit非常感谢。这是最接近于工作的东西。然而,如果我的初始结果大于4个类别,我就根本得不到任何结果。如果少于6个类别,则会得到任何结果。马丁:它对6个人也很管用。当有6只猫时,计算$arr将为6。因此6-6将是0,因此实际上原始字符串将保持不变。这是预期的结果。