将数组存储在while循环中以便在外部使用

use*_*384 2 php arrays

我想从while循环中存储值,但不是以多维方式存储:

 $movies_id = array();

 while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
                $id = $row['id'];
                $title_id = $row['title_id'];
                    $movies_id[] = [$id => $title_id];
     }

print_r($movies_id);
Run Code Online (Sandbox Code Playgroud)

我没有顺路,怎么做,如果我只是写$movies_id = [$id => $title_id];它只显示最后一个值.

提前谢谢你.

Grz*_*orz 8

您需要正确设置值.

            $movies_id = array();

            while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
                $id = $row['id'];
                $title_id = $row['title_id'];
                    $movies_id[$id] = $title_id; // The proper way
                    //$movies_id[] = [$id => $title_id];
            }

            print_r($movies_id);
Run Code Online (Sandbox Code Playgroud)

代码越可读:

            $movies_id = array();

            while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
                    $movies_id[$row['id']] = $row['title_id'];
            }
            print_r($movies_id);
Run Code Online (Sandbox Code Playgroud)

并将导致

array (
    1 => 'Title 1',
    2 => 'Title 2',
    4 => 'Title 4',
    8 => 'Title 8',
)
Run Code Online (Sandbox Code Playgroud)

无钥匙的污染将是:

            $movies_id = array();

            while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
                    $movies_id[] = $row['title_id'];
            }
            print_r($movies_id);
Run Code Online (Sandbox Code Playgroud)

并将导致

array (
    0 => 'Title 1',
    1 => 'Title 2',
    2 => 'Title 4',
    3 => 'Title 8',
)
Run Code Online (Sandbox Code Playgroud)