2009-05-04 21 views
2

答えは$ array [0]ではありません。PHP配列内の要素の参照

$array = array(); 
$array[7] = 37; 
$array[19] = 98; 
$array[42] = 22; 
$array[68] = 14; 

私は配列をソートし、ソートした後、可能な限り最高の試合を取得しようとしているが、次のように

私の配列が設定されています。したがって、この場合$ array [19] = 98; 値98だけが必要です。配列の最初の位置にはが常にになります。 0のキーは存在しないので、私は$ array [0]を使って参照することはできません。速度の制約は、配列をループして最高の一致を見つけることができないことを意味します。

また、あなたがそれをソートしている場合、あなたはあなた自身のソート・ルーチンを指定することができますし、あなたがそれをソートしているながら、それは最高値を選ぶいる

foreach ($array as $value) 
{ 
    echo $value; 
    break; 
} 

答えて

4
$keys = array_keys($array); 
echo $array[$keys[0]]; 

それともcurrent()機能を使用できます。

reset($array); 
$value = current($array); 
+0

現在の+1。 – cgp

+1

current()の前に配列のreset()を呼び出して、最初の要素にいることを確認することができます。 – Powerlord

+0

ありがとうございます。現在は完全に機能します。配列やインデックスのコピーを止める他の制約があります。この場合もスピードは大きなものです。 – Ryaner

0

より良い解決策がなければなりません。

+0

実際のソートはシステムの別の部分で行われています。効果的にコントロールできないブラックボックス。 – Ryaner

+0

ああ、現在の()オプションは_right_答えです。 – cgp

2

いつでも実行できます。

$array = array_values($array); 

これで$ array [0]が正しい答えになります。

3

私が正しくあなたの質問を理解している場合は、配列の最初のキーが欲しい:

$firstValue = reset($array); 
$firstKey = key($array); 
0
$array = array_values($array); 
echo $array[0]; 
1

をあなたの場合array_shiftを使用できる最初の要素が必要な場合、これは何もループせず、値だけを返します。

しかし、あなたの例では、それは最初の要素ではないので、例/質問に矛盾があるか、またはその理解に誤りがあるようです。

+0

array_shift()は内部配列ポインタに依存しないため、current()よりも優れています。 next($ arr)を使用してcurrent($ arr)を使用すると、別の値が返されます。これは当てはまりませんが、_always_が最初の要素を返すのはarray_shift()よりも面白くありません。 –

+0

Array_shiftは配列を短くします。この場合、システムの別のセクションでさらに配列を処理する前に作業するための値が必要です。 – Ryaner

+0

OK、有効なポイント。 :) –

関連する問題