首页 > php数组 > PHP数组foreach遍历输出例子详解

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

通常我们对于数据遍历会使用到foreach来操作当然也有使用到while list each函数来实现了,但在方便面上来看foreach更简洁好用性能也非常的不错,下面本人整理了一款在开发应用中foreach前后使用例子,希望对大家会有所帮助.

简单的一个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() 例子,代码如下:

<?php 
$input  = array("php", 4.0, array("green", "red")); 
$result = array_reverse($input); 
$result_keyed = array_reverse($input, TRUE);

这将使 $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模板引擎中,模板文件:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
<title>{$web_tile}</title>   
</head> 
<body> 
{$article_title} 
<br/> 
  -- by {$author} 
<hr/> 
<br/> 
{$content} 
<br/> 
-- publish @ {$time} 
<br/> 
<br/> 
foreach test: 
{foreach ( from=url key=b item=c )} 
 <a href="index.php?artcle_id={==b}">{==c}</a> 
{/foreach} 
<br/> 
</body> 
</html>

解析引擎,代码如下:

// var 
$pattern_var = "/{$left_tag}\\$([\w\d]+){$right_tag}/"; 
$replace_var = '<?php echo \$this->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 = '<?php foreach($this->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 = "<?php } "; 
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 = '<?php echo \$$1;'; 
if (preg_match($pattern_var, $content)) { 
$content = preg_replace($pattern_var, $replace_var, $content); 
}

解析后代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
<title><?php echo $this->var_tpl_arr["web_tile"];</title> 
</head> 
<body> 
<?php echo $this->var_tpl_arr["article_title"]; 
<br/> 
  -- by <?php echo $this->var_tpl_arr["author"]; 
<hr/> 
<br/> 
<?php echo $this->var_tpl_arr["content"]; 
<br/> 
-- publish @ <?php echo $this->var_tpl_arr["time"]; 
<br/> 
<br/> 
foreach test: 
<?php foreach($this->var_tpl_arr["url"] as $b => $c) {  
 <a href="index.php?artcle_id=<?php echo $b;"><?php echo $c;</a> 
<?php }  
<br/> 
</body> 
</html>

使用代码如下:

<?php 
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.phprm.com", 
  "url2"=>"http://www.phprm.com", 
); 
$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



文章地址:http://www.phprm.com/shuzu/fs9025.html

转载随意^^请带上本文地址!

标签:php数组 foreach遍历数组

相关文章

发表留言