【问题标题】:Find a parent key in a multidimensional php array在多维php数组中查找父键
【发布时间】:2014-01-09 20:03:53
【问题描述】:

我想找出包含所选数组的正确键。现在代码回显出下一个数组键 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 [firstname] => 杰夫 [姓] => 昆斯 [bcountry] => 美国 [byear] => 1955 ) [1] => 数组 ( [rank] => 2 [id] => richter_gerhard [firstname] => Gerhard [姓氏] => Richter [bcountry] => DE [byear] => 1932 ) [2] => 数组 ( [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 ) )

现任艺术家:Peter Doig - UK-1959

3

【问题讨论】:

  • 是我自己还是问题似乎不清楚?...也许可以改写或重组,以便问题更清楚?你能添加一个包含结果的部分吗?
  • Sebastien,我添加了结果来帮助解释。迈克,我试图找出你链接的代码,但没有成功。大约 1 个月前我刚开始自学 php,我每天都在搞清楚,但适应其他代码对我来说仍然是一个挑战。

标签: php arrays multidimensional-array


【解决方案1】:

代替

echo key($array);

你想要的

echo $element;

因为 $element 是在你的 foreach 循环中分配来保存当前键的变量。

【讨论】:

  • 谢谢!我知道我错过了一些东西。我继续尝试通过声明“echo key($element);”来返回元素键它返回了一个错误。这对我有很大帮助!
猜你喜欢
  • 2014-05-11
  • 2021-07-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-31
  • 1970-01-01
  • 1970-01-01
  • 2014-12-13
相关资源
最近更新 更多