2

配列の要素を出力する際に​​非常に奇妙な問題が発生しています。

PHP foreach 内の配列のいくつかの要素を出力しようとしています。ここでは、配列がどのように見えるかを示します。

 [2] => Array
        (
            [id] => 3
            [body] => dsfgdfgd
            [has_subquestion] => 1
            [is_subquestion] => 0
            [ordering] => 2
            [is_manditory] => 0
            [created] => 2013-01-09 12:06:47
            [parent_id] => 0
            [sub] => Array
                (
                    [0] => Array
                        (
                            [id] => 4
                            [body] => dfgdfg
                            [has_subquestion] => 1
                            [is_subquestion] => 1
                            [ordering] => 0
                            [is_manditory] => 0
                            [created] => 2013-01-09 11:24:20
                            [parent_id] => 3
                        )

                    [1] => Array
                        (
                            [id] => 23
                            [body] => gsdgdf
                            [has_subquestion] => 1
                            [is_subquestion] => 1
                            [ordering] => 14
                            [is_manditory] => 0
                            [created] => 2013-01-09 12:56:33
                            [parent_id] => 3
                        )

                )

        )
     [3] => Array
            (
                [id] => 5
                [body] => dfgdfg
                [has_subquestion] => 1
                [is_subquestion] => 0
                [ordering] => 3
                [is_manditory] => 0
                [created] => 2013-01-09 12:06:47
                [parent_id] => 0
                [sub] => Array
                    (
                        [id] => 6
                        [body] => dfgdfg
                        [has_subquestion] => 0
                        [is_subquestion] => 1
                        [ordering] => 3
                        [is_manditory] => 0
                        [created] => 2013-01-08 13:37:07
                        [parent_id] => 5
                    )

            )

最初のものには 2 つの [sub] があり、2 番目のものには 1 つしかないことに注意してください。これはそれらを印刷するための私のコードです

echo count($question['sub']);
foreach($question['sub'] as $s):
    echo '<li>
    <input type="hidden" name="sub[id]" value="'. $s['id'] .'" />
    <input type="hidden" name="sub[parent]" value="'. $question['id'] .'" />
    '. $s['body'] .'</li>';
endforeach;

これはそれが印刷しているものです

2 dfgdfg gsdgdf

8 <--count (これは 8 ではなく 1 であるべきです) 6 <-- 以下のそれぞれは、サブ配列の最初の文字/数字です d 0 1 3 0 2

誰かが私が間違っていることを見ることができますか?

4

3 に答える 3

1

print_r($array) を実行します。

また、再帰的な方法で答えを与える必要があります

于 2013-01-09T20:00:46.720 に答える
0

is_array() を使用して関数を再帰的に呼び出しますか?

于 2013-01-09T19:37:33.110 に答える
0

[sub] 配列が多次元かどうかを確認するには、コードを更新する必要があります。単一の配列しかない場合にのみ一致するキーが sub にあるかどうかを確認することでそれを行います。

if (array_key_exists('id', $question['sub']) {
    // This is a single array so wrap it in an array so that the foreach logic works
    $question['sub'] = array($question['sub']);
}
... continue as normal with your foreach loop.
于 2013-01-09T19:26:12.333 に答える