【问题标题】:How to display big array with filtering如何通过过滤显示大数组
【发布时间】:2013-11-01 05:24:40
【问题描述】:

我有一个大数组。
该数组的内容是:

Array
(
    [0] => Array
        (
            [id] => 12
            [user_id] => 1
            [date] => 2013-10-21 23:01:52
            [type] => 1
            [quantity] => 0
            [value] => 1700
        )

    [1] => Array
        (
            [id] => 13
            [user_id] => 1
            [date] => 2013-10-21 23:01:52
            [type] => 0
            [quantity] => 0
            [value] => 90
        )

    [2] => Array
        (
            [id] => 16
            [user_id] => 1
            [date] => 2013-10-21 23:01:52
            [type] => 0
            [quantity] => 0
            [value] => 0

    [3] => Array
        (
            [id] => 19
            [user_id] => 1
            [date] => 2013-10-31 02:49:12
            [type] => 0
            [quantity] => 0
            [value] => 0
            [bills] => Array
                (
                    [0] => Array
                        (
                            [id] => 5
                            [data_id] => 19
                            [quantity] => 10
                            [value] => 15
                        )

                    [1] => Array
                        (
                            [id] => 5
                            [data_id] => 19
                            [quantity] => 20
                            [value] => 1
                        )

                    [2] => Array
                        (
                            [id] => 5
                            [data_id] => 19
                            [quantity] => 1
                            [value] => 50
                        )

                )

        )

)

我想在 foreach 中显示这个数组。 所以我有:

echo '<ol>';
foreach ( $this->data as $d )
{
    echo '<li><strong>'.$d['name'].'</strong><br /></li>';

    if ( $d['bills'] )
    {
        echo '<ul>';
        foreach ( $d['bills'] as $b )
        {
            echo '<li>';
            echo $b['name'];
            echo '</li>';
        }
        echo '</ul>';
    }
}
echo '</ol>';

这很简单,直到我只想显示包含 key['type'] == 1 的数组。 我不知道我该怎么做。

在 MySQL 中只需要添加 'WHERE type = 1'。 如果过滤是简单的功能,我了解PHP数组很抱歉。 最好的欢呼!

【问题讨论】:

  • foreach ( $this-&gt;data as $d ) { if ($d['type'] == 1) { echo '&lt;li&gt;&lt;strong&gt;.... } }?

标签: php arrays filtering


【解决方案1】:

如果您确实需要创建过滤数组,可以使用 array_filter() 和回调:

$filtered = array_filter($this->data, function($element) {
    return $element['type'] == 1;
});

否则,最简单的解决方案可能就是在 foreach 循环的顶部放置这样的内容:

if($d['type'] != 1) {
    continue;
}

【讨论】:

    【解决方案2】:

    您可以使用简单的IF 语句和continue 来检查type 是否等于1。如果不是,您可以跳过它。

    foreach ( $this->data as $d )
    {
        if ($d['type'] != 1)  continue;
    

    【讨论】:

      猜你喜欢
      • 2015-03-25
      • 2023-03-16
      • 2016-07-25
      • 2011-10-28
      • 1970-01-01
      • 2019-08-22
      • 2019-05-02
      • 1970-01-01
      • 2022-11-19
      相关资源
      最近更新 更多