2014-01-09 23 views
0

我想找出包含所選數組的正確鍵。現在代碼回顯出下一個3而不是2的數組鍵。這看起來很基本。我可以通過簡單地減1來解決這個問題,但這似乎有問題,因爲最後一個藝術家陣列迴應了0的位置。任何人都可以幫忙嗎? (我需要找到這個鍵,所以我可以正確設置下一個和前值。)在多維php數組中找到父鍵

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]」報告包含該數據的正確密鑰,即「[2]」:

Array([0] => Array([rank] => 1 [id] => koons_jeff [firstname] => Jeff [lastname] => Koons [bcountry] => US [byear] => 1955)[1] => Array([rank] => id] => richter_gerhard [firstname] => Gerhard [lastname] => Richter [bcountry] => DE [byear] => 1932)[2] => Array ([rank] => 5 [id] => doig_peter [firstname] => Peter [lastname] => Doig [bcountry] => UK [byear] => 1959)[3] => Array([rank] => 7 [id] => marden_brice [firstname] => Brice [lastname] => Marden [bcountry] =>美國[byear] => 1938))

當前藝術家:彼得·多伊格 - 英國1959年

+0

可能重複的[PHP的 - 查找數組的父鍵](http://stackoverflow.com/questions/2504685/php-find-parent-key-of-array) – Mike

+0

只是我或這個問題似乎不清楚?...也許它可能是重新調整或重組,使問題更清楚?你可以添加一個結果部分? – Sebastien

+0

塞巴斯蒂安,我添加了結果來幫助解釋。邁克,我試圖弄清楚你鏈接到的代碼,但不成功。我大約在1個月前開始教自己的PHP,並且每天都在計算事情,但改編其他代碼對我來說仍然是一個挑戰。 – user2714240

回答

2

而不是

echo key($array); 

你想

echo $element; 
由於$ element是您在foreach上分配的變量,因此請使用

p保存當前的密鑰。

+0

謝謝!我知道我錯過了一些東西。我一直試圖通過聲明「echo key($ element);」來返回元素鍵這返回了一個錯誤。這對我很有幫助! – user2714240