Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

how to use array_push for json_encode

I am iOS developer and I am making Webservices in PHP for getting JSON Response.

Code which I wrote is:

    $result = mysqli_query($con,"SELECT * FROM wp_marketcatagories");
    $data =array();
    while($row = mysqli_fetch_array($result))
                 {
                 $data[] = array_push($data, array('id' => $row['id']));
                 }
    $json = json_encode($data);
    echo $json;

This is what I want in result:

[{"id":"1"},{"id":"2"},{"id":"3"},{"id":"4"},{"id":"5"},{"id":"6"},{"id":"7"},{"id":"8"},{"id":"9"},{"id":"10"},{"id":"11"},{"id":"12"}]

But above code is giving me like this:

[{"id":"1"},1,{"id":"2"},3,{"id":"3"},5,{"id":"4"},7,{"id":"5"},9,{"id":"6"},11,{"id":"7"},13,{"id":"8"},15,{"id":"9"},17,{"id":"10"},19,{"id":"11"},21,{"id":"12"},23]

From where this 1, 3, 5 ,.... are coming ?

like image 253
Usama Sadiq Avatar asked Mar 15 '14 07:03

Usama Sadiq


3 Answers

no need to assign it to $data[]. You are already pushing the values to the array $data

Just simply use

 array_push($data, array('id' => $row['id']));

instead of

 $data[] = array_push($data, array('id' => $row['id']));
like image 58
anurupr Avatar answered Oct 19 '22 20:10

anurupr


Array_Push(): Returns the new number of elements in the array.

...this is were your numbers are coming from and you're adding them to the array with your $data[] = statement

array_push($data, array('id' => $row['id']));

or

$data[] = array('id' => $row['id']);

Same result in this scenario

like image 45
Scuzzy Avatar answered Oct 19 '22 18:10

Scuzzy


You don't require to assign $data twice as you have written like this: $data[] = array_push($data, array('id' => $row['id']));

array_push — Push one or more elements onto the end of array syntax : array_push(array,value1,value2...)

Just write

array_push($data, array('id' => $row['id']));

or

$data[] = array('id' => $row['id']);
like image 43
Nikunj Kabariya Avatar answered Oct 19 '22 19:10

Nikunj Kabariya