2017-08-25 17 views
0

おそらくこれを行うには本当に簡単な方法がありますが、私はそれを解決することはできません。PHP配列最初の項目を取得

Array ([0] => Array ([] => US [1] => U.S. [2] => 21 [3] => 34 [4] => 33 [5] => 35 [6] => 39 [7] => 50 [8] => 61) [1] => Array ([] => 79 [1] => 45 [2] => 84 [3] => 89 [4] => 59 [5] => 64 [6] => 34 [7] => 58 [8] => 55) [2] => Array ([] => 63 [1] => 105 [2] => 68 [3] => 62 [4] => 64 [5] => 67 [6] => CL [7] => Chile [8] => 56) [3] => Array ([] => 40 [1] => 40 [2] => 63 [3] => 37 [4] => 57 [5] => 64 [6] => 59 [7] => 53 [8] => 68) [4] => Array ([] => 70 [1] => 66 [2] => 88 [3] => 48 [4] => 76 [5] => 83 [6] => 80 [7] => 53 [8] => 45) [5] => Array ([] => 44 [1] => 51 [2] => 52 [3] => [4] => [5] => [6] => [7] => [8] =>)) 

これは私の配列です。すべての方法がそれぞれ同じ数のオブジェクト(9)になりますが、現在6の数が増える可能性があります。

私は私が

echo $array[0][1]; 

を入れているかのようにその後、私はしかし、私は、最初の項目(米国を必要とする米国を得るこだわっている私は(米国を)必要とする第一いずれかのように、それぞれに第一項目を取得する必要があります)私は両方を試しました

echo $array[0][0]; 
echo $array[0][]; 

値を返しません。何が間違っているのですか?

+4

あなたの例では、最初の配列要素のキーはありませんが、これは可能ではありません。 – GrumpyCrouton

+2

@GrumpyCroutonはい、PHPでは空の配列キーが使用できます。そのような要素にアクセスするには、 "空のキー"を明示的に指定する必要があります。 - '$ foo ['']' – CBroe

+0

これは 'echo $ array [0] ['']]'のようなものです。私の意見ではデータ構造の設計が悪いです... – PeterM

答えて

0

私が繰り返しはしない空のキーについての良い説明がありますが、各サブアレイの最初の項目を取得する簡単な方法は、コメントに記載したreset関数をマップすることですメインアレイ。

$firsts = array_map('reset', $your_array); 

これは、キーの内容に関係なく動作するはずです。

0

私があなただった、私は私の配列が空のキーを持っている理由を自分自身に尋ねることから始めたい場合は、私の最高の推測では、あなたの代わりにそれはこのような何かを書くことでインクリメンタルにインデックスされているせるのキーを使用してサブアレイを設定することです:

array(
    '' => 'US', // Maybe a '0' was intended to be there, and it's a type. 
    '1' => 'U.S.', 
    '2' => '21', 
    '3' => '34', 
    '4' => '33', 
    // etc... 
); 

この場合、コードを修正するか、少なくともキーを削除して連続したインデックスに置き換えるなど、配列の使い勝手を良くするようにコードを更新すると効果的です。とにかく

、あなたは現在の配列は、これを行うことを使用する場合:あなたは、配列が設定されているかを制御していない場合

foreach ($array as $sub) { 
    echo $sub[''],'<br>'; 
} 

echo $array[0]['']; 

それともを反復処理をarray_values()を使用して再インデックスすることもできます。この関数は、引数として配列を受け取り、連続したインデックスの代わりに、元のキーとその値を返します。

foreach ($array as $key => $sub) { 
    $array[$key] = array_values($sub); 
} 

コードは、空のキーが0に置き換えられることを除いて、あなたは以前よりも同じ配列を与える必要があります。

2

連想配列のキーとして「空の」文字列を使用することはPHPでも可能です。

これは他の空でない文字列のキー値とは明確に異なります。そのため、このようなキーに必要な最も基本的な要件を満たしています(PHPユーザーはこれを明示的に防止する必要はないようです)。 )

$arr = [ 
    'foo' => 'bar', 
    '' => 'baz', 
]; 

ますprint_rは、

Array 
(
    [foo] => bar 
    [] => baz 
) 

としてこれを示し、それは次のようになりvar_dump'edう

array(2) { 
    ["foo"]=> 
    string(3) "bar" 
    [""]=> 
    string(3) "baz" 
} 

後者は、キーが実際には空の文字列であることをより明白にするため、$arr[""] resp。 $arr['']を使用してこの要素にアクセスできます。

のPHPの特殊性を考慮する可能性がありますが、ほとんどの使用例ではほとんど意味をなさないため、実際にはほとんど使用されていません。

関連する問題