0

How can I have directly a multidimensional array from following mysql query?

$query = SELECT * FROM table WHERE field1 = 1;

I've tried the following:

$result = mysqli_query($connection, $query);

while ($row = mysqli_fetch_array($result)){
    $table[] = ($row['field1'].'~'.$row['field2'].'~'.$row['field3'].'~'.$row['field4']);
}

If we print it we have following result:

array(
    [0] => 1 ~ ALFA  ~ beta   ~ 57
    [1] => 1 ~ BETA  ~ gamma  ~ 18
    [2] => 1 ~ GAMMA ~ delta  ~ 24
    ...
    [999] => 1 ~ ZETA ~ theta ~ 19
)

Then I have to explode it to have the multidimensional array that I wish:

foreach ($table as $value) {
    $tableWithSubArrays[] = explode("~", $value);
}

And then we got it:

Array(
    [0] => Array
        (
            [0] => 1
            [1] => ALFA
            [2] => beta
            [3] => 57
    )

    [1] => Array
        (
            [0] => 1
            [1] => BETA
            [2] => gamma
            [3] => 18
    )

    ...

    [999] => Array
        (
            [0] => 1
            [1] => ZETA
            [2] => theta
            [3] => 19
    )

Is there any other way that make it directly from the query to the multidimensional array?

Many thanks in advance!

1 Answer 1

1
while ($row = mysqli_fetch_array($result)){
    $table[] = $row;
}
Sign up to request clarification or add additional context in comments.

4 Comments

Wow! that was compact! :) Thank you, @Cheery!!! And what about if I would like to have just some values, let's say of key[1] and key[3]?
@AloysiadeArgenteuil not sure what you are asking about. Do not want to put all the columns - do not request them from database. SELECT field2, field4 FROM table WHERE field1 = 1;
Yeah, you're right, @Cheery, I wasn't clear... ;-) I still want to select everything from the database, but the array should have only some fields... array ( [0] => array ( [0] => ALFA [1] => 57 ) [1] => array ( [0] => BETA [1] => 18 ) etc.)
@AloysiadeArgenteuil loop and create a new array `while ($row = mysqli_fetch_array($result)){ $table[] = array($row['field1'], $row['field2']); }

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.