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']); }

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.