多维数组结构到PHP HTML输出?

时间:2013-08-24 09:54:56

标签: php html multidimensional-array output

我的网站上有重复的部分。

我正试图减少它们,

我的方法是有一次我将创建一个html模式(预定义为数组),通过这个模式我的函数取消了用户需要什么样的输出并根据我的变量输出结果..

我的问题是我无法找到完成情况的方法..

输入变量可能是(不定式)

$vals = array('Country Name' => 'USA', 'Country Name' => 'Canada', 'Country Name' => 'Mexico');

$vals = array('Country Name' => 'USA', 'Country Name' => 'Canada');

$vals = array('Country Name' => 'USA');

预期的产出是有序的

<div class="lines">
    <div><span>Country Name</span>USA</div>
    <div><span>Country Name</span>Canada</div>
    <div><span>Country Name</span>Mexico</div>
</div>

<div class="lines">
    <div><span>Country Name</span>USA</div>
    <div><span>Country Name</span>Canada</div>
</div>

<div class="lines">
    <div><span>Country Name</span>USA</div>
</div>

Schema是完全适合html的变量

$schema = array(
    array(
        'tag' => 'div',
        'class' => 'lines',
        array(
            'tag' => 'div',
             array(
                'tag' => 'span',
                'key' => '$key'
            ),
            'key' => '$key'
        ),
    )
);

我的函数从此架构创建输出。 (架构可能会根据用户需求进行扩展。)

function get_output($schema, $vals, $t = -1){
    $t++;

    $tag = "";
    $atts = array();
    $keys = array();
    $code = array();

    foreach($schema as $k => $v){        
        if(is_array($v)){
            $keys[] = get_output($v, $vals, $t);
        } else {
            switch($k){
                case "tag": $tag = $v; break;
                case "key": break;
                case "type":   break;
                default: $atts[$k] = $v; break;
            }
        }    
    }

    if($tag){
        $code[] = "<$tag"; 
        foreach($atts as $k=>$v)
        { 
            $code[] = ' '.$k.'="'.urlencode($v).'"'; 
        }
        $code[] = ">";
        $code = array(implode('', $code));
    }
    foreach($keys as $k)
    { 
      $code[] = $k;
    } 

    if($tag){
        $code[] = '</'.$tag.'>'; 
    }
    return implode("", $code);
}

在完成所有这个过程之后,我将使用变量调用我的函数。,Schema预定义一次。

$vals = array('Country Name' => 'USA', 'Country Name' => 'Canada', 'Country Name' => 'Mexico');

echo get_output($schema, $vals, -1);

UPDATE1

我目前的输出是以下的html代码,我找不到推送变量的方法。哪个是国家/地区名称/国家

<div class="lines">
    <div><span></span></div>
    <div><span></span></div>
</div>

UPDATE3不同的架构方法

$schema = array(
    'div' => array(
        'class' => 'lines',
        'div' => array(
             'span' => array(
                'key' => '$k[0]'
            ),
            'key' => '$k[1]'
        )
);

0 个答案:

没有答案