我有一个数组,它是使用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 ['Attributes'] [0] ['Value']将始终为test_id
谢谢!
答案 0 :(得分:1)
您需要重新制作数组。
$newArray = array();
foreach ($result as $key=>$row)
{
foreach ($row['Attributes'] AS $row2)
{
$newArray[$key][$row2['Name']] = $row2['Value'];
}
}
编辑:这取决于你需要做什么 - 如果我打算用结果集做很多工作,这是我首选的方法 - 我只需要遍历集合一次然后它就是数据的格式可以快速访问。
答案 1 :(得分:1)
以下内容将通过引用运行到数组的最后一部分。因此,您所做的编辑会反映在$result
数组中。
foreach ($result[0]['Attributes'] as &$item) {
if ($item['Name'] == 'test_id') // do something
}
答案 2 :(得分:1)
foreach ($result as $item) {
foreach ($item['Attributes'] as $keyvalue) {
if ($keyvalue['Name'] == 'test_id' || $keyvalue['Name'] == 'test_name') {
echo $keyvalue['Value'];
}
}
}