0

多次元配列からグループ化されたデータを出力しようとしています。最高レベルの配列キーを「グループ」と考えてください。グループ内には個々の検索行があります。

たとえば$group[ 0 ][ 1 ]、'group 1, line 1' となります。

各グループのすべての行を表示し、' <hr />' タグを挿入してグループが変更されたことを示します。最初のグループが正しく表示された時点で、hr タグは表示されますが、2 番目のグループの結果は表示されません。ループ内のループの方法が間違っていますか? このような多次元配列を使用することは可能ですか? ありがとう!!

私の配列は次のようになります。

Array
(
[0] => Array
    (
        [0] => stdClass Object
            (
                [name] => testing
                [searchID] => 131
                [lineID] => 190
                [searchString] => 1
            )

        [1] => stdClass Object
            (
                [name] => testing
                [searchID] => 131
                [lineID] => 191
                [searchString] => 2
            )

        [2] => stdClass Object
            (
                [name] => testing
                [searchID] => 131
                [lineID] => 192
                [searchString] => 3
            )

        [3] => stdClass Object
            (
                [name] => testing
                [searchID] => 131
                [lineID] => 193
                [searchString] => 4
            )

    )

[1] => Array
    (
        [4] => stdClass Object
            (
                [name] => test2
                [searchID] => 132
                [lineID] => 199
                [searchString] => 1
            )

        [5] => stdClass Object
            (
                [name] => test2
                [searchID] => 132
                [lineID] => 200
                [searchString] => 2
            )

    )

)

私のコードは次のようになります。

 $x = 0;
 $y = 0;
 while( $x < count( $groups ) )
 {
 while( $y < count( $groups[ $x ] ) )
 {
     //display each single search string
    echo $groups[ $x ][ $y ]->searchString.'<br>';
    $y++; 
 }
 echo '<hr>';
 $x++;
 }
4

4 に答える 4

1

あなたが試すことができます

foreach ( $groups as $group ) {
    foreach ( $group as $var ) {
        echo $var->searchString, "<br />";
    }
}
于 2013-04-04T15:06:11.497 に答える
0

y最初のループ内でリセットする必要があります。

$x = 0;
while( $x < count( $groups ) )
{
    $y = 0;
    while( $y < count( $groups[ $x ] ) )
    {
        //display each single search string
        echo $groups[ $x ][ $y ]->searchString.'<br>';
        $y++; 
    }
     echo '<hr>';
     $x++;
}
于 2013-04-04T15:02:25.450 に答える
0

例の配列を見ると、2 番目のグループの y 値は 4 から始まり、6 に達するまでループするはずです。

foreach ループを使用することをお勧めします。http://php.net/manual/en/control-structures.foreach.php

コードは次のようになります。

foreach ( $groups as $gKey => $gValue )
{
    foreach ( $gValue as $key => $value )
    {
        echo $groups[$gKey][$key]->searchString . "<br />";
        // or $value->searchString . "<br />";
    }
    echo "<hr />";
}
于 2013-04-04T15:06:53.567 に答える
0

foreach を試してください:

foreach ($groups as $x => $group )
{
    foreach ($group as $y => $subGroup )
    {
        echo $subGroup->searchString . '<br>';
    }
    echo '<hr>';
}
于 2013-04-04T15:07:41.500 に答える