php 以$ _POST格式获取多维数组并转换为无序列表。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php 以$ _POST格式获取多维数组并转换为无序列表。相关的知识,希望对你有一定的参考价值。
<?php
/**
*
* Take a multi-dimensional array in $_POST format and convert into an unordered list.
*
* @param $data
* @param array $args
* @return string
*/
function generate_list( $data, $args = array() ){
// Set internal loop counter
$loop = ( isset( $args['loop'] ) && is_int( $args['loop'] ) ) ? (int) $args['loop']: 0;
// Make recursive only to the desired depth
$depth = ( isset( $args['depth'] ) && is_int( $args['depth'] ) ) ? (int) $args['depth']: 0;
// Set current depth
$loop++;
// Determine list type
$list = ( isset( $args['list'] ) && $args['list'] == 'ol' ) ? 'ol': 'ul';
// Get and set classes
$parent_classes = !empty($args['parent_class']) ? (array) $args['parent_class']: array();
$child_classes = !empty($args['child_class']) ? (array) $args['child_class']: array();
$classes = ( $loop == 1 ) ? $parent_classes: array_merge( $parent_classes, $child_classes );
$classes = empty( $classes ) ? '': ' classes="'.str_replace('#', $loop, join(' ', $classes) ).'"';
// Unset parent class
unset( $args['parent_class'] );
// HTML list generation
$html = array();
$next = false;
if( $depth == 0 || $depth >= $loop ){
$html[] = '<'.$list.$classes.'>';
foreach( $data as $k => $v ){
$next = next( $data );
if( is_array( $v ) ){
$args['loop'] = $loop;
$args['depth'] = $depth;
$html[] = call_user_func(__FUNCTION__, $v, $args );
} else {
if( $next && is_array( $next ) ){
$html[] = '<li>'.$v;
} else {
$html[] = '<li>'.$v.'</li>';
}
}
}
$html[] = '</'.$list.'>';
}
if( !$next && $loop > 1 ){
$html[] = '</li>';
}
return implode( $html );
}
以上是关于php 以$ _POST格式获取多维数组并转换为无序列表。的主要内容,如果未能解决你的问题,请参考以下文章
如何将两个单维数组转换为一个多维数组 - PHP
在PHP中获取多维数组的交集
php获取POST数据的三种方法
将 VARIANT 转换为无符号字符数组
php中 curl模拟post发送json并接收json(转)
PHP填充多维关联数组 - 最简单的方法