我想找出包含所选数组的正确键。现在,代码回显下一个数组键 3 而不是 2。这看起来非常基本。我可以通过简单地减去 1 来解决这个问题,但这似乎有问题,因为最后一个艺术家数组回显 0 的位置。任何人都可以帮忙吗? (我需要找到这个键,以便我可以正确设置下一个和上一个值。)
sample_entries.xml
<?xml version="1.0"?>
<entries>
<entry>
<rank>1</rank>
<id>koons_jeff</id>
<firstname>Jeff</firstname>
<lastname>Koons</lastname>
<bcountry>US</bcountry>
<byear>1955</byear>
</entry>
<entry>
<rank>2</rank>
<id>richter_gerhard</id>
<firstname>Gerhard</firstname>
<lastname>Richter</lastname>
<bcountry>DE</bcountry>
<byear>1932</byear>
</entry>
<entry>
<rank>5</rank>
<id>doig_peter</id>
<firstname>Peter</firstname>
<lastname>Doig</lastname>
<bcountry>UK</bcountry>
<byear>1959</byear>
</entry>
<entry>
<rank>7</rank>
<id>marden_brice</id>
<firstname>Brice</firstname>
<lastname>Marden</lastname>
<bcountry>US</bcountry>
<byear>1938</byear>
</entry>
</entries>
index.php
<?php
$xml = simplexml_load_file('sample_entries.xml');
$path = $xml->xpath('entry');
//strip simple xml tags.
$array = json_decode( json_encode($path) , 1);
print_r($array);
// cannot change the above XML structure.
echo '<br><br>';
// set page's unique identifier.
$artist = 'doig_peter';
foreach($array as $element => $inner_array) {
if($artist == $inner_array[id]) {
$current_artist = $inner_array;
extract($current_artist);
echo '<b>Current Artist: </b>'.$firstname.' '.$lastname.' - '.$bcountry.'-'.$byear.'<br><br>';
echo key($array);
}
}
?>
这是上面代码的当前输出。我希望最后一个数字“[3]”报告包含 id 数据的正确密钥,即“[2]”:
数组 ( [0] => 数组 ( [rank] => 1 [id] => koons_jeff [名字] => 杰夫 [姓氏] => 昆斯 [b国家] => 美国 [b年份] => 1955 ) [1] => 数组 ( [rank] => 2 [id] => richter_gerhard [firstname] => Gerhard [姓氏] => 里希特 [bcountry] => DE [byear] => 1932 ) [2] => 数组 ( [排名] => 5 [id] => doig_peter [名字] => 彼得 [姓氏] => Doig [bcountry] => 英国 [byear] => 1959 ) [3] => Array ( [rank] => 7 [id] => marden_brice [名字] => Brice [姓氏] => Marden [b国家] => 美国 [b年] => 1938 ) )
现任艺术家:Peter Doig - UK-1959
3
而不是
echo key($array);
你想要
echo $element;
因为 $element 是在 foreach 循环中分配的用于保存当前键的变量。