最新消息:Welcome to the puzzle paradise for programmers! Here, a well-designed puzzle awaits you. From code logic puzzles to algorithmic challenges, each level is closely centered on the programmer's expertise and skills. Whether you're a novice programmer or an experienced tech guru, you'll find your own challenges on this site. In the process of solving puzzles, you can not only exercise your thinking skills, but also deepen your understanding and application of programming knowledge. Come to start this puzzle journey full of wisdom and challenges, with many programmers to compete with each other and show your programming wisdom! Translated with DeepL.com (free version)

php - how to parseFloat this? - Stack Overflow

matteradmin5PV0评论

i have this code :

$wage = array();
foreach ($result3 as $row3) {
  $wage[] = '[' . floatval($row3['age']) . ',' . floatval($row3['point']) .']';
}
if ($userid == 0 ) {
  $age= "";
} else {
  $age = implode(',', $wage).",";
}
 echo json_encode("var2"=>$myvar ,"var3"=>$age));  // i didnt write var2 because is same as var3

the above will outputs something like [4,2.3][5,6],[1.7,5],

and in javascript im receiving this value outputed above via ajax which has name var3.

dataType: 'json' ,
success: function(response){
var age = response['var3'] ; 
.....

so the question is how can i parseFloat this variable age ?

EDIT . if i alert the json like that

   alert (response);

i get [object Object] // make attention to small o and big O

EDIT2 . used consol log

and i get this

  {"var2":"[2,5],[3.5,5],[6.5,6.5],[8,7],","var3":"[2,46],[3.5,61],[6.5,70],[8,71],","var4":"[2,32],[3.5,41],[6.5,42],[8,43],","var5":"[46,5],[61,5],[70,6.5],[71,7],"}

this returned values i want to parseFloat them as you see they are like strings between two quotes

i have this code :

$wage = array();
foreach ($result3 as $row3) {
  $wage[] = '[' . floatval($row3['age']) . ',' . floatval($row3['point']) .']';
}
if ($userid == 0 ) {
  $age= "";
} else {
  $age = implode(',', $wage).",";
}
 echo json_encode("var2"=>$myvar ,"var3"=>$age));  // i didnt write var2 because is same as var3

the above will outputs something like [4,2.3][5,6],[1.7,5],

and in javascript im receiving this value outputed above via ajax which has name var3.

dataType: 'json' ,
success: function(response){
var age = response['var3'] ; 
.....

so the question is how can i parseFloat this variable age ?

EDIT . if i alert the json like that

   alert (response);

i get [object Object] // make attention to small o and big O

EDIT2 . used consol log

and i get this

  {"var2":"[2,5],[3.5,5],[6.5,6.5],[8,7],","var3":"[2,46],[3.5,61],[6.5,70],[8,71],","var4":"[2,32],[3.5,41],[6.5,42],[8,43],","var5":"[46,5],[61,5],[70,6.5],[71,7],"}

this returned values i want to parseFloat them as you see they are like strings between two quotes

Share Improve this question edited Dec 6, 2012 at 21:29 echo_Me asked Dec 6, 2012 at 21:08 echo_Meecho_Me 37.2k5 gold badges61 silver badges81 bronze badges 6
  • 1 You should use JSON (json_encode()) rather manually build JS code. – Crozin Commented Dec 6, 2012 at 21:10
  • im using json encode i will edit my post – echo_Me Commented Dec 6, 2012 at 21:11
  • Please post the exact JSON output you're getting. – bfavaretto Commented Dec 6, 2012 at 21:18
  • You should be using json_encode() for the whole thing, not just the last step. – user149341 Commented Dec 6, 2012 at 21:18
  • alert wont be as helpful with objects as console.log will. Trying logging it to the console and hitting F12 (in FF and chrome) to see what log message you get – lbstr Commented Dec 6, 2012 at 21:26
 |  Show 1 more ment

2 Answers 2

Reset to default 3

This is incorrect:

$wage[] = '[' . floatval($row3['age']) . ',' . floatval($row3['point']) .']';

You're building a string, which coincidentally happens to LOOK like a javascript array definition, but it's still just a string. When this gets json_encoded, it'll e out as

"[...,...]"
^--       ^-- string

You need to build NATIVE data structures at all stages while in PHP, e.g.

$wage[] = array(floatval($row3['age']), floatval($row3['point']));

and not this mish-mash of native AND "json-like" strings. json_encode() converts NATIVE datatypes of the equivalent Javascript types. Since your own floatval business is producing a string, you'll get a json-encoded string, not an array.

You are getting this all wrong. You do not need to do this;

foreach ($result3 as $row3) {
  $wage[] = '[' . floatval($row3['age']) . ',' . floatval($row3['point']) .']';
}

Perhaps what you want is;

foreach ($result3 as $i => $row3) {
  $newRow = $row3;
  $newRow['age'] = intval($row3['age']);
  $newRow['point'] = floatval($row3['point']);
  $result3[$i] = $newRow;
}

And then do this;

// Create JSON data, assuming that $result3 is an array
$jsonData = json_encode($result3);

// This will give you a JSON string, output this and finish to ensure it IS the only thing output
echo $jsonData;
die;

Now in your javascript, open the development console in what ever browser your using and use the following code in javascript

console.log(response)

This will output the whole response variable to the console and enable you to debug how to get specific data out of the response var.

Hope that helps.

Articles related to this article

Post a comment

comment list (0)

  1. No comments so far