2

これは私が試したことです:

foreach ($multiarr as $arr) {
   foreach ($arr as $key=>$val) {
      if (next($arr) === false) {
         //work on last key
      } else {
         //work
      }
   }
}

もう一度見てみると、ここでは間違って使われていると思いますnextが、どうしたらいいのかわかりません。

この配列の最後の反復にいるかどうかを確認することはできますか?

4

5 に答える 5

4
$lastkey = array_pop(array_keys($arr));
$lastvalue = $arr[$lastkey];

ループで使用したい場合は、単に比較$lastkeyしてください$key

于 2012-09-06T04:59:11.110 に答える
1

反復回数を保持し、反復している配列の長さと照合する必要があります。PHP のデフォルトの Iterator 実装では、次の要素が有効かどうかを確認できません。next には void が返され、API は現在の位置が有効かどうかを確認するメソッドのみを公開します。ここhttp://php.net/manual/en/class.iterator.phpを参照してください。考えている機能を実装するには、独自の反復子を peek() または nextIsValid() メソッドで実装する必要があります。

于 2012-09-06T05:00:50.383 に答える
1

これを試して:

foreach ($multiarr as $arr) {
   $cnt=count($arr);
   foreach ($arr as $key=>$val) {
      if (!--$cnt) {
         //work on last key
      } else {
         //work
      }
   }
}
于 2012-09-06T05:01:14.550 に答える
1

以下の URL を参照してください。

配列の最後のキーを取得するには?

配列の最後のキーを取得するには?

アップデート:

<?php

$array = array(
    array(
    'first' => 123,
    'second' => 456,
    'last' => 789),
    array(
    'first' => 123,
    'second' => 456,
    'last_one' => 789),
);


foreach ($array as $arr) {

    end($arr);         // move the internal pointer to the end of the array
    $key = key($arr);  // fetches the key of the element pointed to by the internal pointer
    var_dump($key);

}

出力:

string(4) "last" string(4) "last_one" 
于 2012-09-06T05:04:05.653 に答える
1

この関数 (理論的にはテストしていません) は、多次元連想配列の最後で最も深いキーを返します。試してみてください。気に入っていただけると思います。

function recursiveEndOfArrayFinder($multiarr){

    $listofkeys = array_keys($multiarr);
    $lastkey = end($listofkeys);
    if(is_array($multiarr[$lastkey])){
        recursiveEndOfArrayFinder($multiarr[$lastkey]);
    }else{
    return $lastkey;
    }
}    
于 2012-09-06T05:15:32.267 に答える