मुद्दा यह है कि आप $tempArray का संदर्भ $arr में डाल रहे हैं। फिर आप संदर्भ बदलते हैं। तीसरे लूप से आपके पास एक ही सरणी के 3 संदर्भ हैं। यही कारण है कि मूल्य इस तरह दिख रहे हैं... आप इसे एक सहज ज्ञान युक्त तरीके से हल कर सकते हैं।
कोशिश करें:
$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);
}