0

私は1つの大きな配列を持っています。
その配列の内容は次のとおりです。

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配列について学んでいるので、そのフィルタリングが簡単な機能である場合は申し訳ありません. 最高の乾杯!

4

2 に答える 2

2

実際にフィルター処理された配列を作成する必要がある場合array_filter()は、コールバックを使用できます。

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

foreachそれ以外の場合、最も簡単な解決策は、おそらくループの先頭に次のようなものを配置することです。

if($d['type'] != 1) {
    continue;
}
于 2013-10-31T21:24:27.063 に答える
1

簡単なIFステートメントを使用して、 が 1 に等しいcontinueかどうかを確認typeできます。そうでない場合はスキップできます。

foreach ( $this->data as $d )
{
    if ($d['type'] != 1)  continue;
于 2013-10-31T21:24:40.247 に答える