2012-05-13 14 views
0

こんにちは、

foreachループ内の配列キーの序数を取得したいと考えています。
foreach内の配列値の順序番号を取得する

<?php 
$array = array("id" => 2, "username" => "foobar"); 
foreach($array as $value){ 
$array_key = search_array($value, $array); 
//find the ordinal number of $array_key from $array here. 
echo $value; 
} 

カウントは、アレイ内のアレイ・キーの全体の数を返し、私は配列のキーの順序番号を取得する必要があります。 皆さん、私が尋ねるものを理解することを願っています。

答えて

2

を私が理解から、エントリがある場合ストリング・キーでは、配列内の順序位置はありません。からhttp://php.net/manual/en/language.types.array.php

PHPの配列は、実際には順序付けられたマップです。マップは、キーに値を関連付けるタイプです。このタイプは、いくつかの異なる用途に最適化されています。それは、配列、リスト(ベクトル)、ハッシュテーブル(マップの実装)、辞書、コレクション、スタック、キューなどとして扱われます。配列値は他の配列でもよいので、ツリーや多次元配列も可能です。

秩序マップは、既存の文字列キーの上に序数キーを割り当てません。

擬似順序キーを取得するには、変数を増分します。

$i=0; 

foreach($array as $key => $value) { 
    echo $i.':'.$key.':'.$value; 
    $i++; 
} 

配列の各序数のキー、キー、および値をエコーアウトします。上記の例では$ idxを使用すると、それらが命名していると値に対応する「キー」を使用することはできませんとして、反復回数をカウントする - あなたが必要なもの

2

各反復後に値が増加する別の変数があります。

foreach($array as $value){ 
$array_key = search_array($value, $array); 
echo current($array); 
echo $value; 
} 

それとも、ただそのようなあなたのループにカウンタを追加することができます:

+0

私は申し訳ありませんが、私はそれが動作する方法を理解していません。あなたは詳細を教えていただけますか?ありがとう –

+0

$ i = 0; foreach($ arrayとしての$ array){...};変数$ iは、現在の序数を表します。 – Lidor

0

あなたがそうのようなcurrent機能を使用することができます

$count = 0; 
foreach($array as $value){ 
$array_key = search_array($value, $array); 
echo $count++; 
echo $value; 
} 
+0

現在の値がエコーされ、増分値と一緒に進みます。 –

+0

'current()'の代わりに 'key()' http://www.php.net/manual/en/function.key.phpを使って必要なものを入手することもできます。 – Yaniro

0
<?php 
    $arry = array("id" => 2; "username" => "foobar"); 
    $idx = 0; 
    foreach($array as $value){ 
     if(array_search(arry, $value)) echo "element found: ".$idx; 
     $idx++; 
    } 
?> 

は別の変数です。

また、検索機能は実際にarray_searchと呼ばれています。

関連する問題