php 如何循环遍历这个数组的数组?[duplicate]

f45qwnt8  于 2022-11-21  发布在  PHP
关注(0)|答案(3)|浏览(162)

此问题在此处已有答案

How to access mysql result set data with a foreach loop(13个答案)
2天前关闭。
我正在从数据库中获取数据,结果如下:

Array
(
    [0] => Array
        (
            [username] => example@gmail.com
            [processedDate] => 2022-11-09 10:22:00
            [processed] => 1
        )

    [1] => Array
        (
            [username] => example@gmail.com
            [processedDate] => 0000-00-00 00:00:00
            [processed] => 0
        )

    [2] => Array
        (
            [username] => example@gmail.com
            [processedDate] => 2022-10-26 11:07:00
            [processed] => 1
        )

    [3] => Array
        (
            [username] => example@gmail.com
            [processedDate] => 2022-11-14 17:21:00
            [processed] => 1
        )

    [4] => Array
        (
            [username] => example@gmail.com
            [processedDate] => 2022-09-19 10:50:00
            [processed] => 1
        )
)

很酷,但是我需要访问,例如,username属性,这与我处理对象($myArray->username)时的情况类似。
我试过了,但它不起作用,因为它不是一个对象,它是一个数组.

foreach($arr as $var) {
    foreach($var as $el) {
        echo $el->username;
    }
}

我也试过用这个:

foreach($arr as $var) {
    echo $var['username'];
}

我的目标是访问username、processedDate和processes属性,以便使用它们并评估条件。
我想得到的是:

Array
(
    [0] => Array
        (
            [username] => example@gmail.com
        )

    [1] => Array
        (
            [username] => example@gmail.com
        )

    [2] => Array
        (
            [username] => example@gmail.com
        )

    [3] => Array
        (
            [username] => example@gmail.com
        )

    [4] => Array
        (
            [username] => example@gmail.com
        )
)

这是我的完整代码:

$sql = "SELECT username, processedDate, processed FROM users_test";
$stmt = $conn->prepare($sql);
$stmt->execute();
$result = $stmt->get_result();

while ($row = $result->fetch_assoc()){
     $arr[] = $row;
}

echo "<pre>";
print_r($arr); // The result of this is the first code I posted here.
au9on6nz

au9on6nz1#

当你把这两种想法结合起来时,你会有更好的机会。

foreach($arr as $var) {
    foreach($var as $el) {
        echo $el['username'];
    }
}
2lpgd968

2lpgd9682#

在某些限制条件下,您可以使用SELECT语句缩短整个过程,SELECT语句只返回用户名和fetch_all()(这需要使用mysqlnd或PHP 8.1+),这意味着您不必循环数据。

$sql = "SELECT username FROM users_test";
$stmt = $conn->prepare($sql);
$stmt->execute();
$result = $stmt->get_result();
$arr = $result->fetch_all(MYSQLI_ASSOC);

echo "<pre>";
print_r($arr);
n9vozmp4

n9vozmp43#

可以尝试使用数组Map函数

$arr = array_map(function($data){ 
  $username = $data['username']; 
  return $data;
}, $arr);

相关问题