小编mha*_*all的帖子

当数组索引中使用$ b ++时,为什么PHP会以不同的方式评估$ b和$ b = $ b

我无法掌握下面列出的代码中的评估逻辑.有谁知道为什么PHP评估$b,并$b = $b在这种情况下,不同?

我在SO阅读了一些问题,并查看了PHP手册.这样做我已经明白"PHP不会(在一般情况下)指定表达式的评估顺序"并且"行为可以在PHP版本之间或根据周围代码进行更改".我不认为这适用于这种情况.或者是吗?

作为第一个承认这可能不是你日常编码问题的人,我仍然很好奇.偶然发现它试图做一些打高尔夫球的代码.

$a = [[00, 01, 02, 03],
      [10, 11, 12, 13],
      [20, 21, 22, 23],
      [30, 31, 32, 33]];

$b = 2;
echo $a[$b][$b++], PHP_EOL;

$b = 2;
echo $a[$b=$b][$b++], PHP_EOL;
Run Code Online (Sandbox Code Playgroud)

输出 - PHP 5.5.14:

32
22
Run Code Online (Sandbox Code Playgroud)

php operator-precedence

5
推荐指数
1
解决办法
317
查看次数

在F#语录中嵌入变量

我正在为SQL写一个F#dsl(http://github.com/kolosy/furious).

select语句如下所示:

type person = {
    personId: string
    firstname: string
    lastname: string
    homeAddress: address
    workAddress: address
    altAddresses: address seq
}
and address = {
    addressId: string
    street1: string
    zip: string
}

let (neighbor: person seq) = 
    db.Yield <@ Seq.filter (fun p -> p.homeAddress.zip = '60614') @>
Run Code Online (Sandbox Code Playgroud)

显而易见(而且很愚蠢)的问题是......如何对报价进行参数化?

如果我只是喜欢:

let z = "60614"
let (neighbor: person seq) = 
    db.Yield <@ Seq.filter (fun p -> p.homeAddress.zip = z) @>
Run Code Online (Sandbox Code Playgroud)

然后z被解析为静态属性访问器(PropertyGet(None, String z, [])).我需要一些东西让我只根据报价检索变量/ let绑定的值.想法?

reflection f# quotations

4
推荐指数
1
解决办法
351
查看次数

标签 统计

f# ×1

operator-precedence ×1

php ×1

quotations ×1

reflection ×1