2010-11-30 9 views
1

文字列と数値インデックスを使用して要素にアクセスできる配列を定義できますか?アソシエイティブインデックスと番号付きインデックスを使用した配列要素へのアクセス

+0

私は、これはあなたが言っているものだと思います。 array( 'a' => 'x'、 'b' => 'y'、 'c' => 'z') 'のような配列を作成し、' $ array [ 1] '(2番目のインデックスなので)。そうですか? – Jonah

答えて

3

これは可能です。

$arr = array(1 => 'Numerical', 'two' => 'string'); 
echo $arr[1]; //Numerical 
echo $arr['two']; //String 
+0

正しい答えにも近くない。異なるタイプのインデックスを持つ2つの異なる要素を両方とも出力しています。 – roger

+3

@rogerもしあなたが何をしているのかをもっと明確に説明すれば、より質の高い回答が得られるでしょう。 – meagar

3

PHPでは、文字列要素と数値索引要素を混在させることができます。最後の項目$array[1]

$array = array(0=>'hello','abc'=>'world'); 

echo $array[0]; // returns 'hello' 
echo $array['0']; // returns 'hello' 
echo $array['abc']; // returns 'world'; 
echo $array[1]; // triggers a PHP notice: undefined offset 

よく見ると、それは、配列の2番目の要素と等価ではないことが明らかになりました。

7

array_values()は、インデックスの数値が1に置き換えられた配列のすべての値を返します。

http://php.net/array-values

$x = array(
    'a' => 'x', 
    'b' => 'y' 
); 
$x2 = array_values($x); 

echo $x['a']; // 'x' 
echo $x2[0]; // 'x' 

代替案は、被参照インデックスのセットを構築することです。

function buildReferences(& $array) { 
    $references = array(); 
    foreach ($array as $key => $value) { 
     $references[] =& $array[$key]; 
    } 
    $array = array_merge($references, $array); 
} 

$array = array(
    'x' => 'y', 
    'z' => 'a' 
); 

buildReferences($array); 

あなたはインデックスを追加または削除を計画していない場合にのみ行われるべきであることに注意してください。あなたはそれらを編集することができます。

3

martswiteの答えは正しいですが、すでに連想配列がある場合は、問題を解決できないことがあります。以下は、この問題を回避するために醜いハックである - そして、すべてのコストで回避する必要があります。

$a = array(
'first' => 1, 
'second' => 2, 
'third' => 3 
); 
$b=array_values($a); 

print $b[2]; 
関連する問題