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填充多维关联数组 - 最简单的方法