0

次のような配列を解析しようとしています。

array(1) {
  ["StrategischeDoelstellingenPerDepartement"] => array(412) {
    [0] => array(5) {
      ["CodeDepartement"] => string(8) "DEPBRAND"
      ["NummerHoofdstrategischeDoelstelling"] => string(1) "1"
      ["Nummer"] => string(2) "27"
      ["Titel"] => string(22) "DSD 01 - HULPVERLENING"
      ["IdBudgetronde"] => string(1) "2"
    }
    [1] => array(5) {
      ["CodeDepartement"] => string(8) "DEPBRAND"
      ["NummerHoofdstrategischeDoelstelling"] => string(1) "2"
      ["Nummer"] => string(2) "28"
      ["Titel"] => string(24) "DSD 02 - Dienstverlening"
      ["IdBudgetronde"] => string(1) "2"
    }
    [2] => array(5) {
      ["CodeDepartement"] => string(8) "DEPBRAND"
      ["NummerHoofdstrategischeDoelstelling"] => string(1) "2"
      ["Nummer"] => string(2) "29"
      ["Titel"] => string(16) "DSD 03 - KLANTEN"
      ["IdBudgetronde"] => string(1) "2"
    }
    ...

(配列は続きますが、ここに全体を投稿するには大きすぎます)

次のように、配列に対して foreach ループを実行できます。

foreach($my_arr->StrategischeDoelstellingenPerDepartement as $row){
    echo "i found one <br>";
}

ただし、他の配列でも同じことをしたいので、関数をジェネリックにしたいです。最初のキー (この場合、StrategischeDoelstellingenPerDepartement) は時々変更される可能性があるため、一般的に行いたいと考えています。私はすでに次のことを試しました:

foreach($my_arr[0] as $row){
    echo "i found one <br>";
}

しかし、次の通知が表示され、データはありません。

Notice: Undefined offset: 0 in C:\Users\Thomas\Documents\GitHub\Backstage\application\controllers\AdminController.php on line 29

これはおそらくばかげた質問ですが、私は PHP を初めて使用するので、これが正しい方法のように思えました。明らかに、そうではありません。誰か助けてくれませんか?

4

4 に答える 4

2

キー名を知らなくてもresetの最初の要素を取得するために使用します。$my_arr

$a = reset($my_arr);
foreach($a as $row){
    echo "i found one <br>";
}
于 2013-01-24T04:06:23.440 に答える
0

あなたがやろうとしているのは、 array ではなく object$my_arr->StrategischeDoelstellingenPerDepartementです。isset()を使用して、インデックスの存在を確認できます。

if(isset($my_arr['StrategischeDoelstellingenPerDepartement'])){
    foreach($my_arr['StrategischeDoelstellingenPerDepartement'] as $row){
        echo "i found one <br>";
    }
}

または、array_values()を使用して配列キーを無視し、インデックス配列にすることもできます。

$my_new_arr = array_values($my_arr);
foreach($my_new_arr as $row){
    echo "i found one <br>";
}   
于 2013-01-24T04:09:28.633 に答える
0

サブ配列をメイン配列からシフトし、それをループします。

$sub = array_shift($my_arr);
foreach ($sub as $row) {
    echo $row['Titel'], "<br>";
}
于 2013-01-24T04:12:39.333 に答える
0

currentrefを使用: http://in3.php.net/manual/en/function.current.php

$a = current($my_arr);
foreach($a as $row){
    echo "i found one <br>";
}
于 2013-01-24T04:39:08.100 に答える