1

AmazonSimpleDbを使用したselectクエリの結果である配列があります。

これが私がprint_r($ result);したときのサンプルデータです。

Array ( [0] => Array ( [Name] => 5140ede647e74
                       [Attributes] => Array (
                            [0] => Array ( [Name] => test_id [Value] => 5140ede647e74 )
                            [1] => Array ( [Name] => test_name [Value] => test1 )
                            [2] => Array ( [Name] => last_update [Value] => 1363209702 )
                            [3] => Array ( [Name] => created [Value] => 1363209702 ) ) ) ) 

test_idとtest_nameを抽出したい場合、どうすればよいですか?私は現在次のことをしています

<?php foreach ($result as $item) {
    echo $item['Attributes'][0]['Value']; 
    echo $item['Attributes'][1]['Value'];
} ?>

ただし、「test_id」と「test_name」を参照して実行したいのは、データが存在するドメインを削除してデータを再入力すると、各属性の順序が変わる可能性があるため、その$item['を信頼できないためです。属性'][0]['値']は常にtest_idになります

ありがとう!

4

3 に答える 3

1

アレイを再キャストする必要があります。

$newArray = array();
foreach ($result as $key=>$row)
{        
    foreach ($row['Attributes'] AS $row2)
    {
         $newArray[$key][$row2['Name']] = $row2['Value'];
    }       
}

編集:それはあなたが何をする必要があるかに依存します-これは私が結果セットで多くの仕事をすることを計画しているなら私の好ましい方法です-私は一度だけセットを繰り返す必要があり、それからそれはデータにアクセスできるフォーマットになります早く。

于 2013-03-14T02:11:44.987 に答える
1

以下は、参照により配列の最後の部分を実行します。したがって、行った編集は$result配列に反映されます。

foreach ($result[0]['Attributes'] as &$item) {
    if ($item['Name'] == 'test_id') // do something
}
于 2013-03-14T02:12:06.713 に答える
1
foreach ($result as $item) {
  foreach ($item['Attributes'] as $keyvalue) {
    if ($keyvalue['Name'] == 'test_id' || $keyvalue['Name'] == 'test_name') {
      echo $keyvalue['Value'];
    }
  }
}
于 2013-03-14T02:15:04.280 に答える