Ben iki tamsayı ekliyorum Neden, ne zaman, PHP kötü bir sonuç çıkmıyor (6 +7 = 1)?

5 Cevap php

Ben iki değişken vardır:

$qty = 7;
$_POST['qty'] = 6;

var_dump($qty, $_POST['qty']); // both vars are integers
$_SESSION['qty'] = $qty + $_POST['qty'];
echo '='.$_SESSION['qty'];

Bu döndürür:

int(7) int(6) =1

(int)$qty, (int)$_POST['qty'] sorunu çözmüyor.

Ben yanlış ne yapıyorum?

Update:

... intval($qty) + intval($_POST['qty']);

yardım değil.

Ve ben bir daha ayrıntı dikkat edin. Apeear Sorun sadece $ _SESSION ['Adet Adet']> = 10:

$_SESSION['qty'] = $qty + $_POST['qty']; // $qty = 3, $_POST['qty'] = 6

İyi bir sonuç Dönüş ($ _SESSION ['Adet Adet'] = 9).

SOLVED

Tüm unswers için teşekkürler. Ama sorun daha gerçek değil (bir sunucu sorunu idi). Neyse tüm +1.

5 Cevap

Sizin $ _SESSION örtük bir yerde dize olarak başlatıldı

$_SESSION = 'blah';

$_SESSION['qty'] = 13;
var_dump($_SESSION['qty']); // gives "1"

Çok garip, ben sorunun bu tür olmamıştı. Açıkça aritmetik işlem tamsayı değerleri kullanıyorsanız? (Tamsayı döküm olarak aynı değil)

$_SESSION['qty'] = (intval($qty) + intval($_POST['qty']));

Sadece kendi değişkenleri kullanarak, ve operasyonun dışında POST-değerini bırakarak denediniz mi?

Eğer (int) dönüştürerek, değişken değil döküm olduğu ile ne yaptığınızı. Sen intval($var) yerine kullanmalısınız.

Bkz PHP: Integers.

Bu size ne veriyor?

$localQty = 7;
$_POST['qty'] = 6;

$_SESSION['qty'] = ($localQty + $_POST['qty']);
var_dump($_SESSION['qty']);

Eğer senaryonun başında) (session_start ile düzgün Session başlatmak mı?

Ben ne olduğunu görmek için ($ _SESSION) print_r olacaktır.