2017-02-07 4 views
0

配列から特定の値を取得しようとしています。配列の 例は次のとおりです。通常配列の値を取得する

array(2) { 
    ["error"]=> 
    array(0) { 
    } 
    ["result"]=> 
    array(1) { 
    ["open"]=> 
    array(1) { 
     ["12345-AAAAA-66AAKK"]=> 
     array(14) { 
     ["inf"]=> 

私は特定の値は、私が使用したいとき:

$datawanted=$data[result][open][value]; 

ただし、この場合には最初の配列は常に(12345-AAAAAを変更する変数です-66AAKK)、私はその価値を見つける必要があります。

私はreset()key[0]でこれを試しましたが、これは望ましい結果をもたらしません。

結果配列の最初の要素の出力を取得する方法はありますか?

+0

何を求めようとしていますか? –

+0

配列を扱う際に、キーが静的であることを確認することが好ましい。値は非静的にすることができる。 –

+0

'array_keys()'を使ってキーを取得し、少なくともそれを使うことができる。 –

答えて

1

あなたはarray_search使用することができます。http://php.net/manual/de/function.array-search.php

例:

foreach ($array['result']['open'] as $dynamicKey => $item) { 
    if ($key = array_search('Value you are looking for', $item) { 
     $datawanted=$array['result']['open'][$dynamicKey][$key]; 
    } 
} 
0

$data[result][open]は、配列項目にアクセスするための正しい方法ではありません。

トークンresultは定数のように見えます。 PHPはというconstantを検索します。見つからず、通知をトリガーします。 「プログラマーが'result'(定数ではなく文字列)を書きたいと思っています。文字列として変換します。」代わりに'result'を使用します。

これは機能しますが、それは恐ろしい習慣です。 PHPの歴史は20年前、it's not recommendedです。

配列のキーを正しく示すようにコードを修正した後、次のステップは、配列内の値にアクセスする多くのPHP方法の1つを選択することです。

することはでき機能reset()を使用することによって、そのキー($data['result']['open']['12345-AAAAA-66AAKK'])を知らなくても、配列の最初の値を取得する:

$datawanted = reset($data['result']['open']); 

それとも、配列の値のみを取得する機能array_values()を使用することができます( 01を維持するために

$values  = array_values($data['result']['open']); 
$datawanted = $values[0]; 

別のオプションは、あなたが必要としない場合:キーは無視され、返される配列には、値は、ご希望のデータは、この配列上の位置0である)ゼロからインデックスされているされていますをさらに処理するには、PHP関数array_shift()を使用して、配列から最初の値を削除して返します。そして最良の方法は、foreach PHP文を使用することです

$datawanted = array_shift($data['result']['open']); 

あなたが$data['result']['open']のすべての値を処理する必要があります(そしておそらく行う)場合:この関数は引数として受け取り、配列を変更することを警告すること。これにより、配列の各要素のキーと値の両方にアクセスできます。

foreach ($data['result']['open'] as $key => $value) { 
    // $key is '12345-AAAAA-66AAKK' 
    $datawanted = $value; 
} 
+0

ありがとうございました!私はコードを試してみましたが、残念ながらこれは結果として「配列」を返します。 reset()とforeachステートメントの両方を使用します。 結果をエコーすると、配列 – dzinee

+0

もちろん、 'echo'は' Array'を出力します。 '$ datawanted'に必要な値は配列です。 ['print_r()'](http://php.net/manual/en/function.print-r.php)または['var_dump()'](http://php.net/manual/en/)を使用してください。 function.var-dump.php)を使用して、その構造と内容を調べます。 – axiac

+0

もちろん、これでも私が探している価値が得られません。実際には、それはその価値の結果を示すので、その価値を正確に逃しました。だから私が 'open'を抜け出せば、私は変数も取得しますが、変数にどのように割り当てることができるのか分かりません。 – dzinee