Php 反射多维阵列的更好方法

Php 反射多维阵列的更好方法,php,arrays,Php,Arrays,我有一个这样的多维数组 Array ( [0] => Array ( [name] => Fernando Alonso [time1] => 3.25 [time2] => 3.25 [time3] => 3.5 ) [1] => Array ( [name] => J

我有一个这样的多维数组

Array
(
    [0] => Array
        (
            [name] => Fernando Alonso
            [time1] => 3.25
            [time2] => 3.25
            [time3] => 3.5
        )

    [1] => Array
        (
            [name] => Jenson Button
            [time1] => 34
            [time2] => 34
            [time3] => 41
        )
)
我想将数据回显到一个表中,目前我正在使用($result是数组)

foreach($result as$result){
回声“;
foreach($结果作为$driver){
回显“$driver”;
}
回声“;
}
这似乎有点不必要,有更好的方法吗?

使用php的函数

$arr = ...;
echo "<pre>"; 
print_r($arr);
echo "</pre>";
$arr=。。。;
回声“;
印刷费($arr);
回声“;
这不会显示在桌子上。我认为表中没有显示数组的内置函数。你必须为此编写一个简单的函数。问题中提供的代码很简单,可以完成任务

使用php的函数

$arr = ...;
echo "<pre>"; 
print_r($arr);
echo "</pre>";
$arr=。。。;
回声“;
印刷费($arr);
回声“;
这不会显示在桌子上。我认为表中没有显示数组的内置函数。你必须为此编写一个简单的函数。问题中提供的代码很简单,可以完成任务

这样做的“更好”方法是编写一个可重用函数来绘制特定的表结构

没有(IMO也不应该有)一个特定的函数来遍历多维数组。这是因为理论上可能有无数的嵌套结构,这将导致不可预测的结果

该语言为您提供了足够的工具,只要您使用正确的代码结构对其进行备份,就可以遍历您提供的任何多维数组


在您的示例中,这将是遍历二维数组的完美方式。我唯一要更改的是,在
foreach
循环中,数组和元素不使用相同的名称:

foreach ($results as $result) {} // RIGHT
而是使用不同的变量:

<table width="100%">
    <thead>
        <tr>
            <th>Name</th>
            <th>Time 1</th>
            <th>Time 2</th>
            <th>Time 3</th>
        </tr>
    </thead>
    <tbody>
    <?php foreach ($result as $row): ?>
        <tr>
            <td><?php echo $row['name'];?></td>
            <td><?php echo $row['time1'];?></td>
            <td><?php echo $row['time2'];?></td>
            <td><?php echo $row['time3'];?></td>
        </tr>
    <?php endforeach; ?>
    </tbody>
</table>
这样做的“更好”方法是编写一个可重用函数来绘制特定的表结构

没有(IMO也不应该有)一个特定的函数来遍历多维数组。这是因为理论上可能有无数的嵌套结构,这将导致不可预测的结果

该语言为您提供了足够的工具,只要您使用正确的代码结构对其进行备份,就可以遍历您提供的任何多维数组


在您的示例中,这将是遍历二维数组的完美方式。我唯一要更改的是,在
foreach
循环中,数组和元素不使用相同的名称:

foreach ($results as $result) {} // RIGHT
而是使用不同的变量:

<table width="100%">
    <thead>
        <tr>
            <th>Name</th>
            <th>Time 1</th>
            <th>Time 2</th>
            <th>Time 3</th>
        </tr>
    </thead>
    <tbody>
    <?php foreach ($result as $row): ?>
        <tr>
            <td><?php echo $row['name'];?></td>
            <td><?php echo $row['time1'];?></td>
            <td><?php echo $row['time2'];?></td>
            <td><?php echo $row['time3'];?></td>
        </tr>
    <?php endforeach; ?>
    </tbody>
</table>

你想这么做吗

// Simple call :
echo '<pre>' . var_export($var, true) . '</pre>';

// Or as a function :
function var_str_repr($var, $as_html = true) {
    $repr = var_export($var, true);
    if ($as_html) {
        return '<pre>' . $repr . '</pre>';
    } else {
        return $repr;
    }
}

名称
时间1
时间2
时间3

您希望这样做吗

// Simple call :
echo '<pre>' . var_export($var, true) . '</pre>';

// Or as a function :
function var_str_repr($var, $as_html = true) {
    $repr = var_export($var, true);
    if ($as_html) {
        return '<pre>' . $repr . '</pre>';
    } else {
        return $repr;
    }
}

名称
时间1
时间2
时间3

以下是我经常使用的代码:

//简单调用:
回显“”。var_出口($var,true)。“”;
//或者作为一种功能:
函数var\u str\u repr($var$as\u html=true){
$repr=var\u导出($var,true);
如果($as_html){
返回“.$repr.”;
}否则{
返回$repr;
}
}

有关更多信息,请参阅文档。

以下是我经常使用的代码:

//简单调用:
回显“”。var_出口($var,true)。“”;
//或者作为一种功能:
函数var\u str\u repr($var$as\u html=true){
$repr=var\u导出($var,true);
如果($as_html){
返回“.$repr.”;
}否则{
返回$repr;
}
}

有关更多信息,请参阅文档。

不,这是一个很好的(ish)代码(ish是因为您可能希望使用
htmlspecialchars
)。但是,如果您计划不止一次地使用它,您可以将它变成一个函数。为什么它是不必要的?你到底想干什么?这只是为了调试吗?这里的很多人,包括我在内,显然读这个问题有点太快了。没有vardumps,没有printr's,table boys&girlsDrupal有一个主题表函数,如果可能的话,您可能想查看和修改它:@Wrikken为什么要使用htmlspecialchars,我过去只在从表单收集数据时使用它?不,这是很好的(ish)代码(ish是因为您可能想使用
htmlspecialchars
)。但是,如果您计划不止一次地使用它,您可以将它变成一个函数。为什么它是不必要的?你到底想干什么?这只是为了调试吗?这里的很多人,包括我在内,显然读这个问题有点太快了。没有vardumps,没有printr's,一个table-boys&girlsDrupal有一个主题表函数,如果可能的话,您可能想查看和修改它:@Wrikken为什么要使用HTMLSpecialChars,我过去只在从表单收集数据时使用它?或者干脆
echo“。print_-r($arr,true)。”或简单地
echo“。打印($arr,true)。”
foreach($result as$row){}//RIGHT
;p@ste-它是
array\u walk\u recursive()
。但是是的。。存在(我猜):P为了组装表,这可能会变得复杂,因为需要创建新行,大量丑陋的if语句将使代码更难阅读和维护…IMO-一个嵌套的
foreach
循环,以一个良好的可重用的干净形式包装,将是处理绘图和组装表结构的最佳方式。@Lix Oops,对。就个人而言,我会选择
array\u map()
-ping和嵌套lambdas;-)
foreach($result as$row){}//RIGHT
;p@ste-它是
array\u walk\u recursive()
。但是是的。。这是存在的(我猜):P为了组装表,这可能会变得复杂,因为您需要创建新行,大量的ug