初入坑php

项目中在前端遇到的php知识

PHP isset()函数

 {if condition="isset($_GET['orderby']) && $_GET['orderby']== 'panjueshijian_timestamp|desc'"}
            <div class=" span"><a href="javascript:;" data-url='/cases/list.html' tid="orderBy" key="doclevel">默认排序1<i class="iconfont icon-jiangxu"></i></a></div>
            <div class="desc span"><a href="javascript:;" data-url='/cases/list.html' tid="orderBy" key="panjueshijian_timestamp">裁判日期1<i class="iconfont icon-jiangxu"></i></a></div>
 {else}
            <div class=" span"><a href="javascript:;" data-url='/cases/list.html' tid="orderBy" key="doclevel">默认排序2<i class="iconfont icon-jiangxu"></i></a></div>
            <div class="desc span"><a href="javascript:;" data-url='/cases/list.html' tid="orderBy" key="panjueshijian_timestamp">裁判日期2<i class="iconfont icon-jiangxu"></i></a></div>
 {/if}

isset() — 检测变量是否设置。

上面代码中的条件含义为:如果条件get方法的参数包含‘oderby',并且oderby的参数值为‘panjueshijian_timestamp|desc’展示前两个div;否则展示后两个div。有点类似于vue中的v-if,v-else的条件判断,写法不同。

Volist标签

<!-- 相关专题数据 -->
 <div class="zhuanti">
      <ul>
          {if condition="isset($vo.special) && isset($vo.special.special) && count($vo.special.special) > 0 "}
          {volist name="vo.special" id="zt"}
          {volist name="zt" id="zts"}

          {if condition="$vipinfo.user_level eq 0"}
                <li><h3 class="report_tit" title="{$zts.title}"><a href="javascript:void(0)" onclick="tips()">{$zts.title}</a></h3></li>
          {else /}
                 <li><h3 class="report_tit" title="{$zts.title}"><a href="/special/{:encode($zts['id'],13)}.html" target="_blank">{$zts.title}</a></h3><a href="/special/{:encode($zts['id'],13)}.html" class="report_btn" target="_blank">点击查看</a></li>
          {/if}

          {/volist}
          {/volist}
          {/if}
        </ul>
  </div>

Volist标签 — 主要用于在模板中循环输出数据集或者多维数组

在控制器中首先对模版赋值:

$User = M('User');
$list = $User->limit(10)->select();
从2.1版开始允许在模板中直接使用函数设定数据集,而不需要在控制器中给模板变量赋值传入数据集变量,如:$this->assign('list',$list);

name属性表示模板赋值的变量名称,因此不可随意在模板文件中改变。

id表示当前的循环变量,可以随意指定,但确保不要和name属性冲突,

例如:

<volist name="list" id="data">

{$data.id}

{$data.name}

</volist>

感觉类似于vue中的遍历

v-for = " (item,index) in list :key = index "

{ { item.id }}

{ { item.name }}

(1)支持输出部分数据,例如输出其中的第5~15条记录

<volist name="list" id="vo" offset="5" length='10'>

{$vo.name}

</volist>

解析:offset从第5条数据开始,长度为10。

2)支持输出偶数记录

<volist name="list" id="vo" mod="2" >

<eq name="mod" value="1">{$vo.name}</eq>

</volist>

解析:mod从0开始计数,这里mod循环计数为0,1

(3)支持Mod属性还用于控制一定记录的换行

<volist name="list" id="vo" mod="5" >

{$vo.name}

<eq name="mod" value="4"><br/></eq>

</volist>

解析:mod循环计数,0,1,2,3,4 value定义当值为4的时候换行,mod定义数据长度五条

(4)没有指定key属性的话,默认使用循环变量i

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

{$i}.{$vo.name}

</volist>

制定key属性的话,使用循环变量k

<volist name="list" id="vo" key="k" >

{$k}.{$vo.name}

</volist>

(5)(这个不太明白)从2.1版开始允许在模板中直接使用函数设定数据集,而不需要在控制器中给模板变量赋值传入数据集变量,如:

<volist name=":fun('arg')" id="vo">{$vo.name}</volist>

(6)在volist循环里面,如果嵌入php代码,输出变量

<select>
 <volist name="goods" id="vo">
      <option value="{$vo.goods_name}" <?php echo ($goods_name == $vo['goods_name'])?"selected":"" ?> >{$key}.{$vo.goods_name}</option>
 </volist>
</select>

在下拉列表里面,根据后台提供的数据,动态的添加option选项。在里面,用php代码,实现select动态显示option的值,而在php代码块中,使用volist的变量,则要使用$vo[‘goods_name’]

系统学习

php语法

<?php " hello world ;" ?>

通过PHP,有两种在浏览器输出文本的基础指令:echo , print

PHP 中的每个代码行都必须以分号结束。分号是一种分隔符,用于把指令集区分开来。

<?php echo " hello world ;"?>

php变量

  1. 定义在函数外部的就是全局变量(global),它的作用域从定义处一直到文件结尾。

<?php
$x=5; // 全局变量

function myTest()
{
    $y=10; // 局部变量
    echo "<p>测试函数内变量:<p>";
    echo "变量 x 为: $x";
    echo "<br>";
    echo "变量 y 为: $y";
} 

myTest();

echo "<p>测试函数外变量:<p>";
echo "变量 x 为: $x";
echo "<br>";
echo "变量 y 为: $y";
?>

输出:

测试函数内变量:变量 x 为: 变量 y 为: 10

测试函数外变量:变量 x 为: 5 变量 y 为:

  1. 定义在函数内部的就是局部变量(local),它的作用域为函数定义范围内。仅能在函数内部访问。

<?php
$x=5;
$y=10;
 
function myTest()
{
    global $x,$y;
    $y=$x+$y;
}
 
myTest();
echo $y; // 输出 15
?>

<?php
function test()
{
    $a = 15;
    echo "内部输出结果:" . $a;
}
echo "外部输出结果:" . $a;  // 无法访问变量 a
echo PHP_EOL;
test();
?>
//输出结果:外部输出结果:''    内部输出结果:15
  1. 函数之间存在作用域互不影响。

  1. 函数内访问全局变量需要global关键字或者使用$GLOBALS[index]数组

PHP 将所有全局变量存储在一个名为 $GLOBALS[index] 的数组中。 index 保存变量的名称。这个数组可以在函数内部访问,也可以直接用来更新全局变量。

<?php
$x=5;
$y=10;
 
function myTest()
{
    $GLOBALS['y']=$GLOBALS['x']+$GLOBALS['y'];
} 
 
myTest();
echo $y;//输出15;
?>

(1)在php中函数是有独立的作用域,所以局部变量会覆盖全部变量,即使局部变量中没有全部变量相同的变量,也会被覆盖。

<?php

$a = 5;

$b = 3;

function t( ){

echo $a - $b;

}

t( ); // 输出0

?>

  1. Static 作用域

当一个函数完成时,它的所有变量通常会被删除。然而,有时候希望某个局部变量不要被删除。

要做到这一点,需在第一次声明变量是使用static关键字

<?php
function myTest()
{
    static $x=0;
    echo $x;
    $x++;
    echo PHP_EOL;    // 换行符
}
 
myTest();//输出0
myTest();//输出1
myTest();//输出2    
?>

然后,每次调用该函数时,该变量将会保留着函数前一次被调用时的值。

注释:该变量仍然是函数的局部变量。

  1. 参数作用域

参数是通过调用代码将值传递给函数的局部变量。参数是在参数列表中声明的,作为函数声明的一部分:

<?php
function myTest($x)
{
    echo $x;
}
myTest(5);
?>

猜你喜欢

转载自blog.csdn.net/m0_49017085/article/details/129294384