本文将带您了解关于PHP-使用逻辑或设置变量的新内容,同时我们还将为您解释php逻辑运算的相关知识,另外,我们还将为您提供关于c–无法使用变量设置变量长度、C++短路求值(逻辑与、逻辑或)、cakep
本文将带您了解关于PHP-使用逻辑或设置变量的新内容,同时我们还将为您解释php逻辑运算的相关知识,另外,我们还将为您提供关于c – 无法使用变量设置变量长度、C++短路求值(逻辑与、逻辑或)、cakephp知道控制器本身的所有设置变量、Docker nginx conf 使用环境变量 设置变量的实用信息。
本文目录一览:- PHP-使用逻辑或设置变量(php逻辑运算)
- c – 无法使用变量设置变量长度
- C++短路求值(逻辑与、逻辑或)
- cakephp知道控制器本身的所有设置变量
- Docker nginx conf 使用环境变量 设置变量
PHP-使用逻辑或设置变量(php逻辑运算)
$db_hased_pw = $result["password"] || false;
我了解这行代码的用法,但是何时将其评估为false?
仅当未定义$result [“ password”]时,$db_hased_pw才等于false吗?
还是如果未设置$result [“ password”]或将false设置为$false,则将$db_hased_password设置为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 – 无法使用变量设置变量长度
int numtriangles = sector1.numtriangles; glm::vec2 tex[test]; //Using a variable generates an error glm::vec3 vertices[10]; //No error here
解决方法
C标准不允许使用可变长度数组.在C中,数组的长度需要是编译时常量.有些编译器确实支持VLA作为编译器扩展,但使用它们会使您的代码在其他编译器中不可移植.
您可以使用std::vector
而不是VLA.
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
这里用到了逻辑或,由于逻辑或的短路,expression1为true,则后面的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
上述代码中用到了逻辑与,由于逻辑与的短路,expression1为false,则后面的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);
完整代码:


#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知道控制器本身的所有设置变量
是否可以通过$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 使用环境变量 设置变量
通过配置环境变量使web docker + Nginx 部署,在启动容器时可传入参数修改proxy_pass的值,避免将代理路径写成固定值,在后端服务地址修改时,拉取的docker镜像不可用
思路
- 通过nginx set 指令定义Nginx conf 变量,将变量放到proxy_pass
- 通过nginx include 指令引入定义变量的environment variable 文件
- 写一个shell 脚本,使用 echo -e 命令将要定义的环境变量写入environment variable 文件,随后启动Nginx 应用(此脚本在容器启动时执行)
- docker 生成容器,启动容器时添加 -e 参数设置容器内环境变量
实现
- 编写 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;
}
}
- 编写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。
- 编写 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"]
- 生成镜像,启动容器,测试:逐条执行以下命令
# 生成本地镜像 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 使用环境变量 设置变量的相关信息,请在本站查询。
本文标签: