GVKun编程网logo

if else条件不能在php中使用数组值(在if语句中,不可以没有else子句)

16

对于想了解ifelse条件不能在php中使用数组值的读者,本文将提供新的信息,我们将详细介绍在if语句中,不可以没有else子句,并且为您提供关于AWKIf/Else条件问题、ifelseifelse

对于想了解if else条件不能在php中使用数组值的读者,本文将提供新的信息,我们将详细介绍在if语句中,不可以没有else子句,并且为您提供关于AWK If / Else条件问题、if elseif else条件语句的计算量问题、if else条件语句、javascript – 如何在sapUI XML-View中使用if / else条件?的有价值信息。

本文目录一览:

if else条件不能在php中使用数组值(在if语句中,不可以没有else子句)

if else条件不能在php中使用数组值(在if语句中,不可以没有else子句)

我来到这个奇怪的问题.

我从数组中获取值并尝试比较它但它不起作用.

代码1

<?PHP
echo $data->item[0]['promocode'].'<br>';
echo $data->item[1]['promocode']; 
?>

输出-1

inhouse
inhouse

现在让我们尝试使用if else条件,如果两个值相同或不同
码2

<?PHP
if(($data->item[0]['promocode']) == ($data->item[1]['promocode'])){
echo "both values are same";
} else {
echo "both values are NOT same";
}?>

输出-2

both values are NOT same

很奇怪

我不明白我做错了什么.

让我们尝试上面的exaple指定变量
代码3

<?PHP
$data0=$data->item[0]['promocode'];
$data1=$data->item[1]['promocode'];
if($data0 == $data1){
echo "both values are same";
} else {
echo "both values are NOT same";
}?>

输出-3

both values are NOT same

我现在正拉着我的头发.

现在硬编码变量中的值

码4

<?
$data0='inhouse';
$data1='inhouse';
if($data0 == $data1){
echo "both values are same";
} else {
echo "both values are NOT same";
}?>

输出4

both values are same

所以我的问题是为什么会发生这种情况?

我有元素数组,我想用当前值检查以前的值,如果尝试然后做一些事情.

谢谢你的时间.

解决方法

假设两个条目都是字符串(如您的第一个代码示例所示),我的猜测是您的条目具有不等的前导和/或尾随空格.首先尝试对它们进行标准化,例如

if (trim($data->item[0]['promocode']) == trim($data->item[1]['promocode']))

要查看正在发生的情况,请尝试将您的第一个示例修改为

<?PHP
    printf('<pre>"%s"%s"%s"</pre>',$data->item[0]['promocode'],PHP_EOL,$data->item[1]['promocode']);
?>

AWK If / Else条件问题

AWK If / Else条件问题

我有一个这样的数据:

foo foo scaffold_7 1 4845 6422 4845 bar bar scaffold_7 -1 14689 16310 16310

我想要做的是处理上面的行,我只是想打印第1,2,3,7列和7列之后的一列。 但有条件的时候打印第7列。

以下是我的awk脚本:

awk ''{ if ($4=="+") { {end=$6-$5}{print $1 "t" $2 "t" $3 "t" $4 "t" $7 "t" end+$7} } else {end=$6-$5}{print $1 "t" $2 "t" $3 "t" $4 "t" $7-end "t" $7} }''

但为什么它不能达到这样的预期效果呢?

有没有默认安装Perl的Unix平台?

在unix shell脚本中查找一个文件的内容到另一个文件中

不考虑缺失值的多个文件的平均值

从unzip -l获取N行

grep日志文件大于时间戳

foo foo scaffold_7 1 4845 6422 bar bar scaffold_7 -1 14689 16310

注意算术(例如$7-end或end+$7 )是必须的。 所以我们不能只从input文件中交换列。 此外,这个AWK将在一个bash脚本中。

awk – 用另外2个文件过滤一个文件

从文本文件中删除奇数行或偶数行

从Bash中另一个更大的文本文件中find文本文件的行的最快方法

在shell脚本中,HTML如何在awk命令中工作?

Linux top -b只显示特定列

尝试:

awk ''BEGIN {OFS = "t"} { end = $6 - $5 if ($4 >= 0) { print $1,$2,$3,$4,$7,end + $7 } else { print $1,$7 - end,$7 } }''

我从来没有使用大括号内的大括号,并为此更喜欢分号分隔符。 我敢肯定你的例子中的else子句只绑定到{end=$6-$5} ,而不是两个加载的条目。 在这种情况下,将为所有行执行{print $1 "t" $2 "t" $3 "t" $4 "t" $7-end "t" $7} 。

awk ''{end=$6-$5} $4>0{ $0=$1 "t" $2 "t" $3 "t" $4 "t" $7 "t" end+$7 } $4<=0{$0=$1 "t" $2 "t" $3 "t" $4 "t" $7-end "t" $7 }1'' file

总结

以上是小编为你收集整理的AWK If / Else条件问题全部内容。

如果觉得小编网站内容还不错,欢迎将小编网站推荐给好友。

if elseif else条件语句的计算量问题

if elseif else条件语句的计算量问题

我们经常用if elseif else这种条件语句去做分支处理,之前遇到这种语句时就有点困惑,哪种条件语句放前面,哪种放后面,不同顺序是否有计算量和效率上的不同?在计算量小的时候,其实分别是不大的,但是随着代码量的不断增多,运算量越来越大,特别是将来大数据和机器学习等海量数据处理的时候,算法的优势就更加明显.Ps: alphaGo Zero用的处理器只有alphaGo的十分之一,算力不强大,但算法的优势却一举让它成功打败阿尔法狗,也印证了算法之于算力的关系,可见算法的重要性.这次用一个小例子来说明代码的计算量优化的问题.

 

假设我们有两个箱子,每个箱子里有从1到10一共10个球,同时从两个箱中分别取一个球,如果两个数都大于8,则中奖.现在要写一个代码,判断是否中奖.

 

思路:我们知道中奖的概率是(2/10)^2=0.04,是一个小概率事件,所以我们分别从两个方向来统计代码的计算量,一个从大概率开始判断,一个从小概率开始判断.

 

从大概率开始判断

//运算次数初始化
$times = 0;

//先判断大概率事件
for ($i=1;$i<=10;$i++) {
	for ($j=1;$j<=10;$j++) {
		if ($i<=8 && $j<=8) { //如果两个数都小于等于8,则这次判断的运算量为3,运算量+3
			$times += 3;
		} elseif ($i<=8 && $j>8) {/*如果第一个数小于等于8第二个数大于8,则这次判断的计算量为6
			(因为它首先判断了自己不符合上一个条件,此时计算量为3,然后在这里又做了
			一个计算量为3的第二次判断,所以总共的计算量为6)*/
			$times += 6;
		} elseif ($i>8 && $j<=8) {/*到达这里用了7次运算,这里第一个数大于8,所以在到达第一个条件时
			的第一个判断时就为假,而由于php的短路与机制,后面的第二个判断就没有执行,所以第一个条件
			执行了2次运算,同理,第二个条件也执行了2次运算,到达本条件时执行了3次运算,所以一共是7次运算*/
			$times += 7;
		} else {//到这里一共经历了2+2+2=6次判断
			$times += 6;
		}
	}
}

echo $times; //输出运算量,一共424次运算

 

从小概率开始判断

$times = 0;
//先判断小概率事件
for ($i=1;$i<=10;$i++) {
	for ($j=1;$j<=10;$j++) {
		if ($i>8 && $j>8) { //如果两个数都大于8,则这次判断的运算量为3,运算量+3
			$times += 3;
		} elseif ($i>8 && $j<=8) { /*如果第一个数大于8第二个数小于等于8,则这次判断的计算量为6
			(因为它首先判断了自己不符合上一个条件,此时计算量为3,然后在这里又做了
			一个计算量为3的第二次判断,所以总共的计算量为6)*/
			$times += 6;
		} elseif ($i<=8 && $j<=8) { /*到达这里用了7次运算,这里第一个数小于等于8,所以在到达第一个条件时
			的第一个判断时就为假,而由于php的短路与机制,后面的第二个判断就没有执行,所以第一个条件
			执行了2次运算,同理,第二个条件也执行了2次运算,到达本条件时执行了3次运算,所以一共是7次运算*/
			$times += 7;
		} else { //到这里一共经历了2+2+2=6次判断
			$times += 6;
		}
	}
}

echo $times; //652次判断

 

可以看出,从概率大的条件开始判断时,运算的次数要少,在这个案例中少20%,也就是说节约了20%的算力,如果是线性的话,则提升了25%的性能.

 

我们反过来试一试,假设两个球都小于2的时候为中奖,分别按大小概率实验一下.

小概率

$times = 0;

//先判断小概率事件
for($i=1;$i<=10;$i++){
	for($j=1;$j<=10;$j++){
		if($i<=2 && $j<=2){
			$times += 3;
		}elseif($i<=2 && $j>2){
			$times += 6;
		}elseif($i>2 && $j<=2){
			$times += 7;
		}else{
			$times += 6;
		}
	}
}

echo $times; //496次判断

大概率

$times = 0;
//先判断大概率事件
for($i=1;$i<=10;$i++){
	for($j=1;$j<=10;$j++){
		if($i>2 && $j>2){
			$times += 3;
		}elseif($i>2 && $j<=2){
			$times += 6;
		}elseif($i<=2 && $j<=2){
			$times += 7;
		}else{
			$times += 6;
		}
	}
}

echo $times; //412次判断

可以看到,从大概率开始判断仍然 比 从小概率开始判断 节省了算力,在这个案例中,节省了约19%.

 

但是,可以看出,无论是大概率还是小概率,以2为分界线的运算量 比 以8为分界线的运算量更少.

412/496 vs. 424/652,虽然中奖概率都是一样的.这是个很有意思的问题.

大概的原因是,从一开始判断的顺序问题,因为数字是从1到10这样排列的,而下面的方法从小数字开始判断的,所以就很容易进入前面的分支,节约了一些算力.

 

思考:

1, 大概率;

2, 顺着数字变化的方向来判断---所以在指定获奖规则的时候可以参考顺着数字变化顺序来;

3, 逻辑或(还有 or die这种),逻辑与的短路问题,节约时间.

if else条件语句

if else条件语句

Java 条件语句

  • if
  • if…else
  • if…else if…else
  • if…else嵌套

if

语法格式:

if(表达式){
    //如果表达式结果位true 那么执行这里的代码
}

示例

public class Test {

   public static void main(String args[]){ int x = 10; if( x < 20 ){ System.out.print("这是 if 语句"); } } } 

 

if…else

语法格式:

if(布尔表达式){
    //true
}else{
    //false
}

示例

public class Test {

   public static void main(String args[]){ int x = 30; if( x < 20 ){ System.out.print("这是 if 语句"); }else{ System.out.print("这是 else 语句"); } } } 


if…else if…else

 


语法格式:

if(布尔表达式 1){
   //如果布尔表达式 1的值为true执行代码
}else if(布尔表达式 2){
   //如果布尔表达式 2的值为true执行代码
}else if(布尔表达式 3){
   //如果布尔表达式 3的值为true执行代码
}else {
   //如果以上布尔表达式都不为true执行代码
}

注意:

  1. 最多有一个else语句
  2. 可以有若干个else if语句,但必须再else之前
  3. 一旦其中一个else if语句检测为true,其他的else if以及else都会被跳过。

示例

public class Test {
   public static void main(String args[]){ int x = 30; if( x == 10 ){ System.out.print("Value of X is 10"); }else if( x == 20 ){ System.out.print("Value of X is 20"); }else if( x == 30 ){ System.out.print("Value of X is 30"); }else{ System.out.print("这是 else 语句"); } } } 

 

if…else嵌套

语法格式:

if(布尔表达式 1){
   ////如果布尔表达式 1的值为true执行代码
   if(布尔表达式 2){
      ////如果布尔表达式 2的值为true执行代码
   }
}

示例

public class Test {

   public static void main(String args[]){ int x = 30; int y = 10; if( x == 30 ){ if( y == 10 ){ System.out.print("X = 30 and Y = 10"); } } } } 

javascript – 如何在sapUI XML-View中使用if / else条件?

javascript – 如何在sapUI XML-View中使用if / else条件?

如何在SapUI5中的 XML-View中实现if / else条件,该条件使用来自 JSONModel的标志(条件)?

到目前为止我有一个控制器:

sap.ui.define([
    "sap/ui/core/mvc/Controller","sap/ui/model/json/JSONModel"
],function (Controller,JSONModel) {
    "use strict";

    return Controller.extend("sap.ui.demo.myApp.myController",{
        onInit: function () {
            //// set data model on view
            var oData = {
                title: "A cool title",values: [{name: "Text 1",marketed: true},{name: "Text 2",marketed: false},{name: "Text 3",marketed: true}]
            };
            var oModel = new JSONModel(oData);
            this.getView().setModel(oModel);
        }
    });
});

和一个视图:

<mvc:View
        controllerName="sap.ui.demo.myApp.myController"
        xmlns="sap.m"
>
    <!-- using aggregation binding -->
    <Panel expandable="true" expanded="true" headerText="{/title}" width="100%" content="{/values}">
        <content>
            <Label text="{name}"/>
            <!-- if {marketed} 
                  <Label text="product is marketed"/> 
              else 
                  add nothing 
            -->
        </content>
    </Panel>

</mvc:View>

编辑:

有没有更好的方法来实现它,而不是实现一个矫枉过正的XML预处理器?

解决方法

OpenUI5支持 Preprocessing Instructions和 Expression Binding

使用预处理指令,您可以执行此类操作

<template:if test="{marketed}">
    <template:then>
        <Label text="product is marketed" />
    </template:then>
    <template:else>
        <Image src="path.jpg" />
    </template:else>
</template:if>

我不确定第一行中的测试是否测试null / not null或true / false.

这是表达式绑定可能很方便的地方:它允许在大括号内使用复杂的表达式

<template:if test="{= ${marketed} === true}">

编辑

以下解决方案可能更简单,但似乎有点hacky.

将这两个元素嵌入XML视图中,但使用复杂的表达式绑定切换可见性.

<Label text="product is marketed" visible="{= ${marketed} === true}"/>
<Image src="path.jpg" visible="{= ${marketed} === false}"/>

关于if else条件不能在php中使用数组值在if语句中,不可以没有else子句的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于AWK If / Else条件问题、if elseif else条件语句的计算量问题、if else条件语句、javascript – 如何在sapUI XML-View中使用if / else条件?等相关内容,可以在本站寻找。

本文标签: