簡體   English   中英

如何使用PHP訪問關聯數組中的值

[英]How To Access Values In Associative Array Using PHP

我有一個數組,它是使用Amazon SimpleDb的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

謝謝!

你需要重鑄數組。

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

編輯:這取決於你需要做什么 - 如果我打算用結果集做很多工作,這是我首選的方法 - 我只需要遍歷集合一次然后它就是一種可以訪問數據的格式很快。

以下內容將通過引用運行到數組的最后一部分。 因此,您所做的編輯會反映在$result數組中。

foreach ($result[0]['Attributes'] as &$item) {
    if ($item['Name'] == 'test_id') // do something
}
foreach ($result as $item) {
  foreach ($item['Attributes'] as $keyvalue) {
    if ($keyvalue['Name'] == 'test_id' || $keyvalue['Name'] == 'test_name') {
      echo $keyvalue['Value'];
    }
  }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM