最新下载
热门教程
- 1
 - 2
 - 3
 - 4
 - 5
 - 6
 - 7
 - 8
 - 9
 - 10
 
PHP数组foreach遍历输出例子详解
时间:2022-06-24 15:21:03 编辑:袖梨 来源:一聚教程网
简单的一个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() 例子
| 代码如下 | 复制代码 | 
| 
 
$input  = array("php", 4.0, array("green", "red"));  | 
	  |
这将使 $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模板引擎中
模板文件:
| 代码如下 | 复制代码 | 
| 
 
 {$article_title} -- by {$author} {$content} -- publish @ {$time} 
 {foreach ( from=url key=b item=c )} 
  | 
	  |
解析引擎:
| 代码如下 | 复制代码 | 
| // 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["article_title"];?> -- by var_tpl_arr["author"];?> var_tpl_arr["content"];?> -- publish @ var_tpl_arr["time"];?> 
 var_tpl_arr["url"] as $b => $c) { ?> 
  | 
	  |
使用:
| 代码如下 | 复制代码 | 
| 
 
 require_once 'core/YATP.class.php'; $app = new YATP(); $article_title = "yet,it is a simple template engine"; $url = array( $app->assign("article_title",$article_title); 
  | 
	  |
相关文章
- 塞尔达无双封印战记豪华版多少钱 豪华版包含内容一览 11-04
 - 塞尔达无双封印战记switch1能玩吗 塞尔达无双游戏适配平台介绍 11-04
 - 原神杜林怎么配队 杜林队伍推荐 11-04
 - 原神杜林武器选择推荐 11-04
 - 原神杜林天赋等级突破材料一览 11-04
 - 碧蓝航线蒂奇喵强度怎么样 11-04