4

さて、これは本当に初心者の質問ですが、答えを得るための適切なキーワードを見つけることができませんでした。

ベクトル変数$pがあります。

私はこれを達成したい:

$n = 5;

$prev = $p[$n--];
$actual = $p[$n];
$next = $p[$n++];

必要な値は次のとおりです。

$prev = 4;
$actual = 5;
$next = 6;

その代わりに、私は次のようになります。

$prev = 5;
$actual = 4;
$next = 4;

何かが足りないことは知っていますが、理解できませんでした。

前もって感謝します

4

3 に答える 3

6

自分で計算してください。

$prev   = $p[$n - 1];
$actual = $p[$n];
$next   = $p[$n + 1];

(何らかの奇妙な理由で)インクリメント/デクリメント演算子を使用する必要がある場合は、次を使用できます。

$prev   = $p[--$n];
$actual = $p[++$n];
$next   = $p[++$n];

jeremyが指摘しているように、インクリメント演算子とデクリメント演算子は変数の元の値を変更するため、元のコードが失敗していることに注意してください。

于 2013-01-31T15:47:36.310 に答える
3

最初の検索時:

$prev = $p[$n--]

次の操作のためにnの値を変更し、1つ減らします。の

$next = $p[$n++];

再び増やしているので、n値は最初と同じです。あなたはニックが言ったことをするべきです。

于 2013-01-31T15:50:43.880 に答える
0

同じ変数をインラインでインクリメントしているので、次のようになります。

$n$n++またはを実行すると5のままになりません$n--。値をに再割り当てします。$n

$n--= 4なので、$ nは$n++5ではなく4になり、6ではなく5になります。

于 2013-01-31T15:51:51.423 に答える