php foreach与多维数组

med*_*edk 51 php arrays foreach

我正在开发一个使用数据库类来查询mySQL的php应用程序.

课程在这里:http://net.tutsplus.com/tutorials/php/real-world-oop-with-php-and-mysql/

我在课堂上做了一些调整以满足我的需求,但是有一个问题(也许是一个愚蠢的问题)

当使用select()时,它返回一个多维数组,就像一个包含3个cols(id,firstname,lastname)的表一样:

Array
(
    [0] => Array
        (
            [id] => 1
            [firstname] => Firstname one
            [lastname] => Lastname one
        )

    [1] => Array
        (
            [id] => 2
            [firstname] => Firstname two
            [lastname] => Lastname two
        )

    [2] => Array
        (
            [id] => 3
            [firstname] => Firstname three
            [lastname] => Lastname three
        )
)

现在我希望这个数组用作mysql结果(mysql_fetch_assoc).

我知道它可能与foreach()一起使用,但这是使用简单的数组.所以我认为我必须重新声明一个新的foreach()与每个foreach(),但我认为这可能会减慢或导致更高的服务器负载.

那么如何以最简单的方式将foreach()应用于这个多维数组呢?

谢谢

Bra*_*rad 111

你可以在这里使用foreach就好了.

foreach ($rows as $row) {
    echo $row['id'];
    echo $row['firstname'];
    echo $row['lastname'];
}
Run Code Online (Sandbox Code Playgroud)

我认为您习惯于使用数字指示(例如$row[0])访问数据,但这不是必需的.我们可以使用关联数组来获取我们所追求的数据.


Kar*_*lis 15

你可以使用array_walk_recursive:

array_walk_recursive($array, function ($item, $key) {
    echo "$key holds $item\n";
});
Run Code Online (Sandbox Code Playgroud)

  • @Brad,在这种情况下我不喜欢foreach,我只是想展示另一种选择.顺便说一下,我认为它不会浪费太多内存,我认为PHP只定义了这个函数一次,但是每次迭代都会调用它. (3认同)

小智 6

对于 php 中的数组,foreach 循环总是一个很好的解决方案。
在这种情况下,它可能是例如:

foreach($my_array as $number => $number_array)
    {
    foreach($number_array as $data = > $user_data)
        {
            print "Array number: $number, contains $data with $user_data.  <br>";
        }
    }
Run Code Online (Sandbox Code Playgroud)


小智 5

这本来是布拉德回答下的评论,但我的声誉不够高。

最近我发现我也需要多维数组的键,即它不仅仅是数组的索引,在 foreach 循环中。

为了实现这一点,您可以使用与接受的答案非常相似的东西,而是按如下方式拆分键和值

foreach ($mda as $mdaKey => $mdaData) {
    echo $mdaKey . ": " . $mdaData["value"];
}
Run Code Online (Sandbox Code Playgroud)

希望能帮助某人。