过滤数组会导致for循环

时间:2017-02-27 17:08:04

标签: php arrays foreach filter

我有这段代码从文件中创建我的数组:

List<T>

然后我有这个代码来显示数组:

            <?php
            $servers = array();
            $handle = @fopen("data/data.txt", "r");

            if ($handle) {
                while (($buffer = fgets($handle)) !== false) {
                    $line = explode("|", $buffer);
                    $servers[] = array(
                        "name" => $line[0],
                        "ip" => $line[1],
                        "type" => $line[2],
                    );
                }

                fclose($handle);
            }
            ?>

这是数组样本:

                    <?php           
                foreach ($servers as $name => $servers): ?>
                            <td style="width:340px;">&nbsp;<?php echo $servers['name']; ?></td>
                            <td style="width:240px;"><?php echo $servers['ip']; ?></td>
                        </tr>
                <?php endforeach; ?>

假设我需要过滤数组类型的结果是好的, 我尝试使用此代码,但它只返回最后一个数组:

Array(
[0] => Array
    (
        [name] => aaa
        [ip] => 123
        [type] => good
    )

[1] => Array
    (
        [name] => bbb
        [ip] => 345
        [type] => good
    )
)

2 个答案:

答案 0 :(得分:0)

错误在foreach循环中的变量名中(使用$ server而不是$ serve作为$ servers已存在且包含您的数据)

$mp->track("My Event");

编辑1

过滤数组,然后打印

 <?php foreach ($servers a $server): ?>
           <?php if($server['type']=="good"){?>
                <tr>
                    <td style="width:340px;">&nbsp;<?php echo $server['name']; ?></td>
                    <td style="width:240px;"><?php echo $server['ip']; ?></td>
                </tr>
           <?php } ?>
    <?php endforeach; ?>

答案 1 :(得分:0)

由于这只是numaric数组,并且您没有在循环体内的任何位置使用密钥,因此您不需要使用ssl_verify: false,只有as $key => $value就足够了。另请注意不同的变量名称。

as $value