php foreach遍历输出,PHP数组foreach遍历输出例子详解

本文介绍了PHP的array_reverse函数用于数组逆序输出,并展示了在PHP模板引擎中的应用,通过解析模板文件,替换变量并处理foreach循环,实现模板内容的动态渲染。示例代码详细解释了整个过程。
摘要由CSDN通过智能技术生成

简单的一个php数组函数,之前没这个需要一直都不知道有这么一个函数,擦汗...

php数组逆序输出代码

代码如下

foreach(array_reverse($array) AS $key=>$value){

echo $value.'

';

}

array_reverse

(PHP 4, PHP 5)

array_reverse — 返回一个单元顺序相反的数组

说明

array array_reverse ( array $array [, bool $preserve_keys ] )

array_reverse() 接受数组 array 作为输入并返回一个单元为相反顺序的新数组,如果 preserve_keys 为 TRUE 则保留原来的键名。

Example #1 array_reverse() 例子

代码如下

这将使 $result 和 $result_keyed 具有相同的单元,但是注意键名的区别。$result 和 $result_keyed 的打印输出显示分别为:

Array

(

[0] => Array

(

[0] => green

[1] => red

)

[1] => 4

[2] => php

)

Array

(

[2] => Array

(

[0] => green

[1] => red

)

[1] => 4

[0] => php

)

例子,在PHP模板引擎中

模板文件:

代码如下

{$web_tile}

{$article_title}

-- by {$author}

{$content}

-- publish @ {$time}

foreach test:

{foreach ( from=url key=b item=c )}

{==c}

{/foreach}

解析引擎:

代码如下

// var

$pattern_var = "/{$left_tag}\\$([\w\d]+){$right_tag}/";

$replace_var = 'var_tpl_arr["$1"];?>';

if (preg_match($pattern_var, $content)) {

$content = preg_replace($pattern_var, $replace_var, $content);

}

// foreach

preg_match_all("/{$left_tag}foreach\s+([^{]+?){$right_tag}/is", $content, $match_foreach);

if (isset($match_foreach[1]) && is_array($match_foreach)) {

foreach($match_foreach[1] as $match_key => $match_value) {

$split_foreachs = array_filter(preg_split('/\s+/is', $match_value));

$new_foreach_tag = array();

foreach($split_foreachs as $split_foreach) {

$split = explode("=", $split_foreach);

if (count($split == 2)) {

if(in_array($split[0], array("from","item","key"))) {

//过滤标签 不存在过滤

$new_foreach_tag[$split[0]] = $split[1];

}

}

}

$from = $key = $item = '';

extract($new_foreach_tag);

$key = ($key) ? '$'.$key.' =>' : '' ;

$replace_foreach = 'var_tpl_arr["'.$from.'"] as '.$key.' $'.$item.') { ?>';

$content = str_replace($match_foreach[0][$match_key], $replace_foreach, $content);

}

}

$pattern_foreach = "/{$left_tag}\/foreach{$right_tag}/";

$replace_foreach = "";

if (preg_match($pattern_foreach, $content)) {

$content = preg_replace($pattern_foreach, $replace_foreach, $content);

}

// var in statement

$pattern_var = "/{$left_tag}==([\w\d]+){$right_tag}/";

$replace_var = '';

if (preg_match($pattern_var, $content)) {

$content = preg_replace($pattern_var, $replace_var, $content);

}

解析后:

代码如下

var_tpl_arr["web_tile"];?>

var_tpl_arr["article_title"];?>

-- by var_tpl_arr["author"];?>

var_tpl_arr["content"];?>

-- publish @ var_tpl_arr["time"];?>

foreach test:

var_tpl_arr["url"] as $b => $c) { ?>

使用:

代码如下

require_once 'core/YATP.class.php';

$app = new YATP();

date_default_timezone_set("Asia/Shanghai");

$app->is_cache = false;

$article_title = "yet,it is a simple template engine";

$author = "sanwhiteyu@tencent.com";

$web_tile = "just test ";

$content = "It is easy to write a simple template engine for yourself,what u can do is try to do it!";

$time = date("Y-m-d H:i:s",time());

$url = array(

"url1"=>"http://www.111com.net",

"url2"=>"http://www.111com.net",

);

$app->assign("article_title",$article_title);

$app->assign("author",$author);

$app->assign("web_tile",$web_tile);

$app->assign("content",$content);

$app->assign("time",$time);

$app->assign("url",$url);

$app->display("index.html");

// end of script

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值