PHP如何循环读取嵌套数组并转置输出为指定的行列格式
问题背景
现有嵌套数组
Array ( [0] => Array ( [0] => FL [1] => members ) [1] => Array ( [0] => FK [1] => members ) [2] => Array ( [0] => number [1] => number ) [3] => Array ( [0] => FV [1] => mem ) )
预期输出效果
第一行输出所有子数组的0号元素,第二行输出所有子数组的1号元素:
FL FK number FV members members number mem
输出结果需要作为输入字段的取值,和要求的字段格式保持一致。
原有代码问题
原有代码采用嵌套foreach遍历每个子数组的每个元素单独输出<li>,会将8个元素分别输出为8行,不符合两行输出的要求。
修正后代码方案
如果需要保留每个元素对应的key/type/value属性提交,仅将展示文本按行分组,可以用如下写法:
// 分别拼接两行的展示文本和对应的隐藏字段 $row1Label = ''; $row1HiddenFields = ''; $row2Label = ''; $row2HiddenFields = ''; foreach($project_fields as $k => $detail){ // 组装第一行内容 $row1Label .= $detail[0].' '; $row1HiddenFields .= ' <input type="hidden" name="project_fields[label][]" value="'.$detail[0].'" /> <input type="hidden" name="project_fields[key][]" value="'.$custom_details[$k].'" /> <input type="hidden" name="project_fields[type][]" class="privacy_select" value="'.(isset($project_fields['type'][$k])?$project_fields['type'][$k]:'all').'" /> <input type="hidden" name="project_fields[value][]" value="'.$project_fields['value'][$k].'" /> '; // 组装第二行内容 $row2Label .= $detail[1].' '; $row2HiddenFields .= ' <input type="hidden" name="project_fields[label][]" value="'.$detail[1].'" /> <input type="hidden" name="project_fields[key][]" value="'.$custom_details[$k].'" /> <input type="hidden" name="project_fields[type][]" class="privacy_select" value="'.(isset($project_fields['type'][$k])?$project_fields['type'][$k]:'all').'" /> <input type="hidden" name="project_fields[value][]" value="'.$project_fields['value'][$k].'" /> '; } // 输出第一行 echo '<li class="detail_list"> <label>'.trim($row1Label).' </label>'.$row1HiddenFields.'<span class="dashicons dashicons-no-alt"></span></li>'; // 输出第二行 echo '<li class="detail_list"> <label>'.trim($row2Label).' </label>'.$row2HiddenFields.'<span class="dashicons dashicons-no-alt"></span></li>';
如果业务要求整行作为一个字段提交,只需要把implode拼接后的整行内容赋值给隐藏字段即可。
内容的提问来源于stack exchange,提问作者Singh Pratibha
相关产品推荐
相关产品推荐

