나는 실제로 어떤 일이 일어나는지 전혀 모른다. 이야기 : 데이터베이스의 SELECT 문에 PDO를 사용합니다.PHP : 할당 후 잘못된 값
$sql = "SELECT a,b,c,performance,points,compare
FROM normvalues
WHERE x=:x AND y=1 AND z=:z";
$stmt = $GLOBALS['PDO']->prepare($sql);
$stmt->bindParam(":x",$x);
$stmt->bindParam(":z",$z);
$stmt->execute();
$res=$stmt->fetchAll(PDO::FETCH_ASSOC);
그래서 괜찮습니다. 또한 괜찮아
array(6) {
["a"]=> string(2) "44"
["b"]=> string(4) "1176"
["c"]=> string(4) "1166"
["performance"]=> string(4) "50.1"
["points"]=> string(1) "1"
["compare"]=> string(2) "-1"
}
[1]=>
array(6) {
["a"]=> string(2) "57"
["b"]=> string(4) "1176"
["c"]=> string(4) "1166"
["performance"]=> string(4) "47.7"
["points"]=> string(1) "2"
["compare"]=> string(2) "-1"
}
[2]=>
array(6) {
["a"]=> string(2) "70"
["b"]=> string(4) "1176"
["c"]=> string(4) "1166"
["performance"]=> string(4) "44.7"
["points"]=> string(1) "3"
["compare"]=> string(2) "-1"
}
...
: 나는 위해서 var_dump$res
변수 뭔가 같은를 얻을 때. 그러나 결과를 다른 방법으로 분류해야합니다. 그래서 내가하고있어 :
foreach($res as $e){
$this->normTable[$e['a']][$e['points']]=$e['performance'];
$this->normTable[$e['a']]['compare']=$e['compare'];
}
그리고 지금 나는 완전히 없어졌다. $e['performance']
을 지정하면 잘못된 값이 표시됩니다. 실제로 이것은 성능 값이어야합니다.
[1176]=>
array(4) {
[1]=> string(2) "50"
["compare"]=> string(2) "-1"
[2]=> string(2) "48"
[3]=> string(2) "45"
}
이미 데이터베이스의 값을 확인했으며 올바른 값입니다. doubleval()
을 수행하면 올바른 값을 얻을 수 있지만 문제는 모든 값이 double이 아니라 정수 또는 문자열이라는 것입니다. 나 또한 (문자열)을 사용하여 유형 변환하려고 시도했지만 결과는 동일합니다. 나는 아무런 설명이 없다.
업데이트 :
그것은 매우 큰 프로젝트의 난 그냥 가능한을 최소화하고 가능한 한 내 문제가 명확하게하려고 노력했다. 하지만 지금은 새로운 것을 알아 낸 : 을 나는 루프 동안 normTable에서 내 첫 번째 변수 ') 에코 ('는 수행
foreach($res as $e){
$this->normTable[$e['a']][$e['points']]=$e['performance'];
echo "a:".$e['a']." pt: ".$e['points']." perf: ".$e['performance']."-".$this->normTable[1176][1]."\n";
$this->normTable[$e['a']]['compare']=$e['compare'];
}
와 값은 50 ''에 ''50 .1에서 변화하고있다. 여전히 이유를 알 수 없습니다. PHP에서 배열의 크기 제한이 있습니까?
업데이트 2 및 큰 죄송합니다!
내가 말했듯이 큰 프로젝트입니다. 그래서 내가 읽은 테이블에는 몇 가지 특성에 대한 값이 두 번 이상 있습니다. 사실 그런 경우는 일어나지 않아야합니다. 그래서 대답은 간단합니다. 50 명이 할당 되었기 때문에 50이되었습니다. 시간을 허리 잘 물어 줘서 유감입니다. 그러나 나는이 사례를 완전히 제외시켰다. 그리고 C로 코딩하고 있기 때문에 나의 첫 번째 생각은 다음과 같다. 메모리 누출 - 명백한 경우!
도움 주셔서 감사합니다.
하지만 무엇을하려고합니까? – user2182349
필자는 데이터베이스에서 배열을 읽어 내 코드에서 사용하기 위해 다른 배열로 정렬합니다. 범주 (p.p. 1176)가 있으며 각 범주는 특정 성능에 따라 1-3 포인트를 얻을 수 있습니다 ... – user3240316
최소 예를 들면? 문제를 재현하려면 데이터베이스가 필요합니까? –