sshanzel
sshanzel

Reputation: 389

PHP array string key add number at the end

Good day fellas!

I have this block of code where i create a JSON string and i have a dynamic number of data so what i need is also a dynamic name for a key..

if (mysql_num_rows($result) > 0) {
    $response["members"] = array();
    $x = 0;
    $members = array();
    while ($row = mysql_fetch_array($result)) {
        $members = array();
        $members["member" + (string)$x] = array();
        $member["member_id"] = $row["member_id"];
        $member["firstname"] = $row["firstname"];
        $member["mi"] = $row["mi"];
        $member["lastname"] = $row["lastname"];
        $member["email"] = $row["email"];
        $member["username"] = $row["username"];
        $member["password"] = $row["password"];
        $member["guild_id"] = $row["guild_id"];
        $member["guild_name"] = $row["guild_name"];
        $member["guild_code"] = $row["guild_code"];
        array_push($members["member" + (string)$x], $member);
        $x++;
    }
    array_push($response["members"], $members);

    echo json_encode($response);;
}

In JQuery this type of method works.. my question is, is there any way i can achieve it using php? If you know i will be very happy to know...

Upvotes: 1

Views: 99

Answers (2)

Death-is-the-real-truth
Death-is-the-real-truth

Reputation: 72269

1.Suggestion:-stop using deprecated+removed(php5 +php7) version of mysql_*.Move towards mysqli_* OR PDO along with prepared statements(Prevent Sql Injection)

2.Why creating unnecessary array and multiple push.No need to do that.Do like below:-

$response["members"] = array();//put outside
if (mysql_num_rows($result) > 0) {
    $x = 0;
    while ($row = mysql_fetch_array($result)) {
        $response["members"][$x]["member_id"] = $row["member_id"]; //assign value directly to the resultant array
        $response["members"][$x]["firstname"] = $row["firstname"];
        $response["members"][$x]["mi"] = $row["mi"];
        $response["members"][$x]["lastname"] = $row["lastname"];
        $response["members"][$x]["email"] = $row["email"];
        $response["members"][$x]["username"] = $row["username"];
        $response["members"][$x]["password"] = $row["password"];
        $response["members"][$x]["guild_id"] = $row["guild_id"];
        $response["members"][$x]["guild_name"] = $row["guild_name"];
        $response["members"][$x]["guild_code"] = $row["guild_code"];
        $x++;
    }
}

if(count($response["members"])>0){ //check finally that array is not empty
 echo json_encode($response); //echo json encoded array data
}

Upvotes: 1

ewcz
ewcz

Reputation: 13097

if you want to achieve that the members array contains individual records with keys as member0, member1, etc., then you could proceed as:

if (mysql_num_rows($result) > 0) {
    $x = 0;
    $members = array();
    while ($row = mysql_fetch_array($result)) {
        $member = array();
        $member["member_id"] = $row["member_id"];
        $member["firstname"] = $row["firstname"];
        $member["mi"] = $row["mi"];
        $member["lastname"] = $row["lastname"];
        $member["email"] = $row["email"];
        $member["username"] = $row["username"];
        $member["password"] = $row["password"];
        $member["guild_id"] = $row["guild_id"];
        $member["guild_name"] = $row["guild_name"];
        $member["guild_code"] = $row["guild_code"];
        $members["member$x"] = $member;
        $x++;
    }
    $response["members"] = $members;

    echo json_encode($response);
}

Upvotes: 1

Related Questions