GVKun编程网logo

PHP-使用逻辑或设置变量(php逻辑运算)

16

本文将带您了解关于PHP-使用逻辑或设置变量的新内容,同时我们还将为您解释php逻辑运算的相关知识,另外,我们还将为您提供关于c–无法使用变量设置变量长度、C++短路求值(逻辑与、逻辑或)、cakep

本文将带您了解关于PHP-使用逻辑或设置变量的新内容,同时我们还将为您解释php逻辑运算的相关知识,另外,我们还将为您提供关于c – 无法使用变量设置变量长度、C++短路求值(逻辑与、逻辑或)、cakephp知道控制器本身的所有设置变量、Docker nginx conf 使用环境变量 设置变量的实用信息。

本文目录一览:

PHP-使用逻辑或设置变量(php逻辑运算)

PHP-使用逻辑或设置变量(php逻辑运算)

$db_hased_pw = $result["password"] || false;

我了解这行代码的用法,但是何时将其评估为false?

仅当未定义$result [“ password”]时,$db_hased_pw才等于false吗?

还是如果未设置$result [“ password”]或将false设置为$false,则将$db_hased_pa​​ssword设置为false,还是将其设置为零?

解决方法:

当$result [“ password”]为“ fassy value”时,它将评估为false. empty上的页面描述了这些值.

这些将是等效的:

$db_hased_pw = !!$result["password"];
$db_hased_pw = (bool) $result["password"];

如果确实无法定义$result [“ password”],则应使用:

$db_hased_pw = !empty($result["password"]);

避免发出通知.

c – 无法使用变量设置变量长度

c – 无法使用变量设置变量长度

我现在要做的是创建一个长度由变量定义的数组.但是,当我将变量放入数组长度时,它给了我一个“可变长度数组的非POD元素类型’glm :: vec2’”错误.但是,如果我用实际数字替换变量,则错误消失.为什么会发生这种情况?我该如何解决这个问题?

int numtriangles = sector1.numtriangles;


glm::vec2 tex[test]; //Using a variable generates an error
glm::vec3 vertices[10]; //No error here

解决方法

您不能在标准C中使用可变长度数组(VLA).
C标准不允许使用可变长度数组.在C中,数组的长度需要是编译时常量.有些编译器确实支持VLA作为编译器扩展,但使用它们会使您的代码在其他编译器中不可移植.

您可以使用std::vector而不是VLA.

C++短路求值(逻辑与、逻辑或)

C++短路求值(逻辑与、逻辑或)

1逻辑或的短路

首先看如下代码:

#include <iostream>
using namespace std;
int main()
{
  int a = 1;
  cout << "a = " << a <<endl;
  true || (a=0);
  cout << "a = " << a <<endl;
}

运行结果:

a = 1

a = 1

逻辑或的表现形式如下:

expression1 || exexpression2

这里用到了逻辑或,由于逻辑或的短路,expression1true,则后面的expression2(即:(a=0) )不再求值,整个表达式的结果为true,所以a的值仍为1,没有改变。

2逻辑与的短路

首先看如下代码:

#include <iostream>
using namespace std;
int main()
{
    int a = 1;
    cout << "a = " << a <<endl;
    false && (a=3);
    cout << "a = " << a <<endl;
}

运行结果:

a=1

a=1

逻辑与的表现形式如下:

expression1 && exexpression2

上述代码中用到了逻辑与,由于逻辑与的短路,expression1false,则后面的expression2不再求值,整个的结果为false,所以a的值没有改变。

3、应用举例

这里以CSDN上的一个帖子为例(http://topic.csdn.net/u/20121011/10/c7e0a805-b4e2-44db-9d71-455f5f851240.html ):

不用if语句,不用汇编,怎么使得两数之积总是小于等于255?

大家看过帖子会发现有很多方法,比如最简单的条件表达式:

result = ((a*b) > 255) ? 255 : a*b;

这个是最先被人提出的,但好像楼主不认同,那就试下以下两种方式:

逻辑或的短路

bool tmp = ((result = a*b) < 255) || (result=255);

逻辑与的短路:

bool tmp = ((result = a*b) >= 255) && (result=255);

完整代码: 

View Code
#include <iostream>
using namespace std;
int main()
{
    int a,b,result;
    while (true)
    {
        cin>>a>>b;
//       result = ((a*b) > 255) ? 255 : a*b;
//       bool tmp = ((result = a*b) < 255) || (result=255);
        bool tmp = ((result = a*b) >= 255) && (result=255);
        cout<<result<<endl;
    }
}

运行效果如下: 

个人拙见,不足之处欢迎指出。

好,就这些了,希望对你有帮助。

cakephp知道控制器本身的所有设置变量

cakephp知道控制器本身的所有设置变量

是否可以通过$this-> set(‘variable_name’,’some_value’)跟踪所有设置变量
在控制器的方法本身.
实际上我有一个方法调用其他几个方法,每个子方法设置值来查看.现在我无法跟踪主方法中是否有相同的键设置两次.

    function beforeFilter()
{
    $this->set('key1', 'viable value');
}


function reqMethod()
{
    $this->extendMethod1();
    $this->extendMethod2();
    $this->extendMethod3();
    $this->extendMethod4();
    $this->extendMethod5();
    $this->extendMethod6();
            // Want to track all set variable (key) here.
}

private function extendMethod1()
{
    $this->set('key1', 'unkNow value');
}

这里有可能将key1(错误地)设置为另一种方法.
任何帮助真的很感激.

解决方法:

Controller :: set()只是将值添加到’viewVars’属性中,因此要调试所有这些变量,您只需要这样做:

debug($this->viewVars);

你可以通过查看源代码来自己发现这个?

view the source

Docker nginx conf 使用环境变量 设置变量

Docker nginx conf 使用环境变量 设置变量

通过配置环境变量使web docker + Nginx 部署,在启动容器时可传入参数修改proxy_pass的值,避免将代理路径写成固定值,在后端服务地址修改时,拉取的docker镜像不可用

思路

  1. 通过nginx set 指令定义Nginx conf 变量,将变量放到proxy_pass
  2. 通过nginx include 指令引入定义变量的environment variable 文件
  3. 写一个shell 脚本,使用 echo -e 命令将要定义的环境变量写入environment variable 文件,随后启动Nginx 应用(此脚本在容器启动时执行)
  4. docker 生成容器,启动容器时添加 -e 参数设置容器内环境变量

实现

  1. 编写 nginx 配置文件,使用预定义的变量
# 处理 proxy_pass 的值为域名时,域名解析产生的问题
resolver 114.114.114.114;
server {
    listen    80;
    server_name localhost;
    # 引入定义变量指令的文件
    include /etc/Nginx/conf.d/*.variable;

    root   /usr/share/Nginx/html;

    charset utf-8;

    location / {
      # 变量使用
      return 200 $APP_ROOT;
    }

    location /test {
      # 变量使用
      proxy_pass         $APP_ROOT;
      # proxy_set_header   Host             $host;
      proxy_set_header   X-Real-IP        $remote_addr;
      proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
    }
}
  1. 编写shell
# /bin/bash

# 设置多个环境变量到 environment variable
# echo -e "set \$variable1 $PATH;
# set \$variable2 $PATH;
# set \$variable3 $PATH;" > /opt/aaa/env.variable; 

# 设置单个环境变量到 environment variable
echo set \$APP_ROOT $APP_ROOT\; > /etc/Nginx/conf.d/env.variable 
# 启动 Nginx 应用
Nginx
# 防止容器启动后进程退出,导致容器退出;实现容器后台运行
sh

此处的 echo 是将 set \$APP_ROOT $APP_ROOT\; 这个字符串写入到 /etc/Nginx/conf.d/env.variable 这个文件中,供Nginx conf include。

  1. 编写 Dockerfile
FROM Nginx:alpine
LABEL maintainer=fullsee

# 将 Nginx 配置文件 copy 到容器内配置文件的目录下
copY ./default.conf /etc/Nginx/conf.d

# 将 shell copy 到 workdir 目录,此处为 /opt
copY ./main.sh /opt

# 给环境变量设置初始值
ENV APP_ROOT=default

# workdir
workdir /opt

# 容器内给shell文件添加所有用户可执行权限
RUN chmod a+x ./main.sh

# 容器应用端口
EXPOSE 80

# 每次容器启动时执行 main.sh shell 文件
CMD ["sh", "main.sh"]
  1. 生成镜像,启动容器,测试:逐条执行以下命令
# 生成本地镜像 test,通过当前目录下的 Dockerfile,. 为当期目录下寻找Dockerfile
docker build -t test .

# 启动 test 镜像,生成 test 容器;-e APP_ROOT=http://www.baidu.com/ 为定义的环境变量及值
docker run -it -e APP_ROOT=http://www.baidu.com/ --name test -p 3000:80 -d test

# 查看 test 容器是否在运行中,若能看到则是在后台运行,否则为运行后随即退出(脚本中最后的 sh 命令解决的便是容器启动后随即退出问题)
docker ps

# 查看容器 log
docker logs test

# 测试:执行以下命令应输出 http://www.baidu.com/ 为成功,也就是刚才启动镜像时 APP_ROOT 设置的值
curl http://localhost:3000 

# 测试:执行以下命令会输出百度的html文本文档
curl http://localhost:3000/test

Github源码

我们今天的关于PHP-使用逻辑或设置变量php逻辑运算的分享已经告一段落,感谢您的关注,如果您想了解更多关于c – 无法使用变量设置变量长度、C++短路求值(逻辑与、逻辑或)、cakephp知道控制器本身的所有设置变量、Docker nginx conf 使用环境变量 设置变量的相关信息,请在本站查询。

本文标签: