Vấn đề là bạn đang chèn một tham chiếu đến $ tempArray vào $ arr. Sau đó, bạn thay đổi tham chiếu. Đến vòng lặp thứ ba, bạn có 3 tham chiếu đến cùng một mảng. Đó là lý do tại sao các giá trị hiển thị theo cách đó ... bạn có thể giải quyết vấn đề này theo một cách không trực quan.
thử:
$stmt->bind_result($tempArray["val1"], $tempArray["val2"],$tempArray["val3"]);
while ( $stmt->fetch () ) {
$x = $tempArray; //This copies the values of $tempArray to $x and each loop will create a new x.
array_push($arr, $x);
}