我有一个代码示例,不确定哪种方法是最佳使用方式。
例如我有
if x = 1
if y = 2
if abc = false check z = 3. if abc = true then dont check z = 3
仅检查
if (abc = false) then
begin
if (x = 1) and (y = 2) and (z = 3) then
begin
...
end
else
begin
if (x = 1) and (y = 2) then
begin
...
我不确定我是否在解释最好但希望人们能理解的东西。
我想知道这是否可行或最好的方法。请记住,而不是示例中x,y,z和abc。我可以使用更多的东西。
我目前的结构是...我认为不可行,并认为有更好的方法,但我不确定
// remove dates older than 30 days
function remove30DayBeforeDates($a) {
$pieces = explode(' ', $a['datetime']);
return strtotime($pieces[0]) > strtotime('-30 days');
}
// remove dates older than 30 days
$array = array(
array(
'datetime' => '3/29/2019 4:00:00 PM - 5:00:00 PM',
'value_raw' => 95
), array(
'datetime' => '4/01/2019 3:00:00 PM - 4:00:00 PM',
'value_raw' => 99
), array(
'datetime' => '3/31/2019 2:00:00 PM - 3:00:00 PM',
'value_raw' => 101
), array(
'datetime' => '2/10/2019 2:00:00 PM - 3:00:00 PM',
'value_raw' => 112
), array(
'datetime' => '3/30/2019 2:00:00 PM - 3:00:00 PM',
'value_raw' => 100
));
$array = array_filter($array, "remove30DayBeforeDates");
// sort array based on the date
function check($a, $b) {
$pieces1 = explode(' ', $a['datetime']);
$pieces2 = explode(' ', $b['datetime']);
return strtotime($pieces2[0]) <=> strtotime($pieces1[0]); // use spaceship operator
}
// sort array based on the date
usort($array, "check");
$value_raw = array_column($array, 'value_raw'); // get array of values from column "value_raw"
print_r(implode(',',$value_raw));
预先感谢
答案 0 :(得分:2)
您的代码示例均未编译,因为两者均未使用正确的语法。
这应该使您入门:
if (x = 1) and (y = 2) then
begin
if (abc) then
// Handle abc = True
else
begin
if (z = 3) then
// Handle abc = false and z = 3
else
// Handle abc = false and z <> 3
end;
end;
答案 1 :(得分:2)
我认为您正在寻找or
。现在,您将检查x必须为1,y必须为2,如果abc为false,z必须为3。
如果abc = true,z仍可以为3,但不会被选中。
请注意,我只是写了abc
而不是abc = true
。由于已经是布尔值(true / false),因此可以。
还要注意如何使用括号对操作进行分组。总子表达式abc or (z=3)
必须返回true,总表达式才能返回true。
此外,这些术语的顺序十分重要-它们从左到右进行评估。如果将术语(abc or (z=3))
替换为逻辑上相等的术语((z=3) or abc)
,则会对z=3
进行评估。
if (x = 1) and (y = 2) and (abc or (z = 3)) then
// Your magic goes here
测试程序主体以证明顺序很重要
function z : Integer;
begin
writeln('Z being evaluated');
result := x + y;
end;
begin
x := 1;y := 2;
abc := true;
if (x=1) and (y=2) and (abc or (z=3)) then
writeln ('evaluated true')
else
writeln ('evaluated false');
writeln('done');
readln;
end.