PHP:如何将HTML复选框的连字符分割字符串转为多维数组?
解决PHP分割字符串生成嵌套数组的问题
我来帮你搞定这个嵌套数组的生成需求!你的核心需求是把从复选框拿到的每个字符串用-分割,然后组成一个二维数组对吧?咱们来一步步完善你的代码:
核心思路
- 先初始化
$nalozi为一个空数组(你之前直接把整个$_POST["items"]塞进去的写法不对,会导致它变成一维数组里套整个原数组) - 遍历
$_POST["items"]里的每一个字符串元素 - 用
explode()函数把每个字符串按-分割成子数组 - 把分割后的子数组依次添加到
$nalozi中,这样就得到了你要的嵌套结构
完善后的代码
if(isset($_POST["submit"])){ $paketi = array(); $prikolica = $_POST["truck"]; $nalozi = array(); // 初始化空的嵌套数组容器 // 先做安全校验:确保items存在且是数组,避免报错 if(isset($_POST["items"]) && is_array($_POST["items"])){ // 遍历每个需要分割的字符串 foreach($_POST["items"] as $itemString){ // 用"-"分割字符串,得到子数组 $splitItem = explode("-", $itemString); // 将子数组添加到nalozi中 $nalozi[] = $splitItem; } } // 如果你想测试结果,可以打开下面的注释 // print_r($nalozi); }
效果验证
假设$_POST["items"]里的元素是["002251/18-1-1000-5500.00-800", "另一个字符串-分割-示例"],那么处理后$nalozi的结构就是:
Array ( [0] => Array ( [0] => 002251/18 [1] => 1 [2] => 1000 [3] => 5500.00 [4] => 800 ) [1] => Array ( [0] => 另一个字符串 [1] => 分割 [2] => 示例 ) )
完全符合你要的array[0][0]=>002251/18这种嵌套格式~
可选优化(按需添加)
如果担心有些分割后的子数组有空值,可以在添加前过滤一下:
$splitItem = array_filter(explode("-", $itemString));
这样会自动移除分割后产生的空元素。
内容的提问来源于stack exchange,提问作者Mu Lem
相关产品推荐
相关产品推荐

