zoukankan      html  css  js  c++  java
  • foreach、count、explode(对无限级分类的语法注释-显示无限级效果)

    foreach ($array as $key => $value)

    foreach仅能用于数组。

    每次循环中,当前单元的键名也会在每次循环中被赋给变量$key。

    当前单元的值被赋给$value。

    <!DOCTYPE html>
    <html>
    <body>
    
    <?php
    $age=array("Bill"=>"35","Steve"=>"37","Peter"=>"43");
    
    foreach($age as $x=>$x_value) {
       echo "Key=" . $x . ", Value=" . $x_value;
       echo "<br>";
    }
    ?>
    
    </body>
    </html>

    输出结果:

    => 是数组成员访问符号

    -> 是对象成员访问符号

    比如:

    $array = array("site map"=>"map.php"); //定义了一个数组,包含一个数组成员:键名为site map,值为map.php

    $this->$name = $value

    $this 在php语言里是个特定的变量,它代表了类本身,->是访问其类成员的操作符,$this->$name = $value,这句代码意思是:将当前类的name变量的值设置为$value

    获取数组的长度

    <!DOCTYPE html>
    <html>
    <body>
    
    <?php
    $cars=array("Volvo","BMW","Toyota");
    echo count($cars);
    ?>
    
    </body>
    </html>

    结果是:3

    关联数组

    <!DOCTYPE html>
    <html>
    <body>
    
    <?php
    $age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
    echo "Peter is " . $age['Peter'] . " years old.";
    ?>
    
    </body>
    </html>

    结果是:Peter is 35 years old.

    两种创建关联数组的方法:

    $age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");

    or:

    $age['Peter']="35";
    $age['Ben']="37";
    $age['Joe']="43";
     
    总结:
     
     
     
     
     
    $age=array("Bill"=>"35","Steve"=>"37","Peter"=>"43");

    foreach($age as $x=>$x_value){}

    变量age是x x代表Bill,Steve,Peter等
    $age['Bill','Steve','Peter'等]="35","37","43"等

    重点:
    foreach($list as $key=>$value){
    $list[$key]['count']=count(explode('-',$value['bpath']));
    }
    第一行是循环list的键名和值

    explode函数

    例子

    在本例中,我们将把字符串分割为数组:

    <?php
    $str = "Hello world. It's a beautiful day.";
    print_r (explode(" ",$str));
    ?>

    输出:

    Array
    (
    [0] => Hello
    [1] => world.
    [2] => It's
    [3] => a
    [4] => beautiful
    [5] => day.
    )

    定义和用法

    explode() 函数把字符串分割为数组。

    语法

    explode(separator,string,limit)
    参数描述
    separator 必需。规定在哪里分割字符串。
    string 必需。要分割的字符串。
    limit 可选。规定所返回的数组元素的最大数目。

    
    

    count() 函数

    定义和用法

    count() 函数计算数组中的单元数目或对象中的属性个数。

    对于数组,返回其元素的个数,对于其他值,返回 1。如果参数是变量而变量没有定义,则返回 0。如果 mode 被设置为 COUNT_RECURSIVE(或 1),则会递归底计算多维数组中的数组的元素个数。

    语法

    count(array,mode)
    参数描述
    array 必需。规定要计数的数组或对象。
    mode

    可选。规定函数的模式。可能的值:

    • 0 - 默认。不检测多维数组(数组中的数组)。
    • 1 - 检测多维数组。

    注释:该参数是 PHP 4.2 中加入的。




    foreach($list as $key=>$value){ $list[$key]['count']=count(explode('-',$value['bpath'])); }
    第一行是循环list的键名和值
    第二行等号右边的意思是在
    '-'分割字符,要分割的字符串是bpath,最后计算分割后数组中元素的个数

    bpath数组

    $list=$cate->field("id,name,pid,path,concat(path,'-',id) as bpath")->order('bpath')->select();

    concat

     
    n. 合并多个数组;合并多个字符串

    先直观的看下效果

    $list=$menu->field("id,name,pid,path,concat(path,'-',id) as bpath")->order('bpath')->select();

    //合并两个字段组合成一个临时字段bpath

    //dump($list);

    bpath为:

    0-1 分割后为2

    0-1-2 分割后为3

    foreach($list as $key=>$value){
    $list[$key]['count']=count(explode('-',$value['bpath']));
    }
    第一行是定义list的键名和值
    第二行等号右边的意思是在
    '-'分割字符,要分割的字符串是bpath,最后计算分割后数组中元素的个数

    第二行的意思是$list[$key]['count']等于2、3、4等,辈分越低,数字越大,因为bpath是$value的id,所以bpath为$list的值并循环
    order('bpath')

    按顺序排序

    thinkphp的field方法的用法

    1. $Model->field('id,title,content')->select();

    这里使用field方法指定了查询的结果集中包含id,title,content三个字段的值。执行的SQL相当于:

    1. SELECT id,title,content FROM table
    $list=$cate->field("id,name,pid,path,concat(path,'-',id) as bpath")->order('bpath')->select();

    查询id、name、pid、path、path-id(按顺序排序,无限极分类的排序效果)

    两个大元素,一个大元素下面有五个小元素,分别正是:id、name、pid、path、path-id

    模板里有两个模板引擎,分别是

    <option value="{$vo['id']}">
    <for start="0" end="$vo['count']">

    {$vo['name']}

    option 元素定义下拉列表中的一个选项(一个条目)。

    option value 定义送往服务器的选项值。这个值就是id值。

    看下前台源码

    <option value="0">根栏目</option>
    <option value="1">
    &nbsp;&nbsp;&nbsp;&nbsp;123</option><option value="2">
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;456</option><option value="4">
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;111</option><option value="3">
    &nbsp;&nbsp;&nbsp;&nbsp;789</option></select><br />

    name和&nbsp;是重点

    &nbsp;在html里是空格的意思

    <volist name="alist" id="vo">

    对应

    $this->assign('alist',$list);

    assign

    [英][əˈsaɪn][美][əˈsaɪn]

    vt.分派,选派,分配; 归于,归属; [法律] 把(财产,权利、利息)从一人转让给另一人; 把…编制; 

    n.[常用复数][法律]受让人,接受财产等转让的人,受托者; 

    $list=$cate->field("id,name,pid,path,concat(path,'-',id) as bpath")->order('bpath')->select();

    <for start="0" end="$vo['count']">
    &nbsp;&nbsp;
    </for>

    http://doc.thinkphp.cn/manual/for.html

    用法:

    1. <for start="开始值" end="结束值" comparison="" step="步进值" name="循环变量名" >
    2.  </for>
    <form action="__URL__/add" method="post">
    请选择父级栏目:<select name="pid" size="20">
    <option value="0">根栏目</option>
    <volist name="alist" id="vo">
    <option value="{$vo['id']}">
    <for start="0" end="$vo['count']">
    &nbsp;&nbsp;
    </for>
    {$vo['name']}
    </option>
    </volist>
    </select><br />
    新的栏目名称:<input type="text" name="name" /><br />
    <input type="submit" value="添加栏目" />
    </form>
    1. <for start="1" end="100">
    2. {$i}
    3.  </for>

    解析后的代码是

    1. for ($i=1;$i<100;$i+=1){
    2.     echo $i;
    3.  }


  • 相关阅读:
    django之--模型层(ORM语法)
    mysql问题记录
    CentOS系统内存使用问题(内存是拿来用的,而不是拿来看的)
    CentOS6&CentOS7安装FFmpeg
    django之--模板层
    Django之--视图层
    Django之ORM学习2--路由层
    Django之ORM学习
    Django入门
    第二版mq 数据结构选型
  • 原文地址:https://www.cnblogs.com/hellowzd/p/4099256.html
Copyright © 2011-2022 走看看