通常我们对于数据遍历会使用到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() 例子

代码如下复制代码

  $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模板引擎中

  模板文件:

代码如下复制代码
{$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);

  }

  解析后:

代码如下复制代码
<?php echo $this->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.jquerycn.cn",

  "url2"=>"http://www.jquerycn.cn",

  );

  $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

  您可能感兴趣的文章:

  php遍历数组之list foreach each用法总结

  php遍历数组的几种方法(for foreach list each while)

  php数组遍历方法详解(for foreach list each key)

  php数组遍历foreach ($arr as &$value)用法介绍

  php foreach 循环遍历数组方法

  php遍历数组list foreach each方法实例

  php遍历数组 foreach each() list()方法总结

  php一维数组遍历方法的比较分析

  php数组入门教程之数组遍历

  PHP简短而安全的数组遍历

  • 打赏
  • 收藏
  • 评论
  • 举报
提问和评论都可以,用心的回复会被更多人看到 评论
发布评论
全部评论 () 最热 最新
相关文章

举报文章

请选择举报类型

内容侵权 涉嫌营销 内容抄袭 违法信息 其他

具体原因

包含不真实信息 涉及个人隐私

补充说明

0/200

上传截图

格式支持JPEG/PNG/JPG,图片不超过1.9M

已经收到您得举报信息,我们会尽快审核