dongmiao260399
2018-08-24 20:23
浏览 93
已采纳

PHP多维数组基于键提取特定值

I'm trying to create an anchor link by extracting specific array values based upon based upon the key. I've tried using a foreach loop inside of a for loop, however that doesn't seem to work.

Based upon the below multidimensional array how can I loop through each subarray to create individual anchor links, such as:

Example:

    /* Array Example */

    array(3) {
          [0]=>
              array(2) {
                ["@attributes"]=>
                    array(1) { 
                        ["id"] => string(1) "2"
                    }
                ["name"]=> string(10) "Mark"
              }
          [1]=>
              array(2) {
                ["@attributes"]=>
                    array(1) {
                      ["id"]=> string(1) "4"
                    }
                ["name"]=> string(8) "John" 
              }
          [2]=>
              array(2) {
                ["@attributes"]=>
                    array(1) {
                      ["id"]=> string(1) "5"
                    }
                ["name"]=> string(10) "Suzy"
              }

    /* Desired Output */

    <a href="example.com?id=2&name=mark"> Mark </a>
    <a href="example.com?id=4&name=john"> John </a>
    <a href="example.com?id=5&name=mark"> Suzy </a>
  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • dsuxcxqep31023992 2018-08-24 20:35
    已采纳

    Let's assume the array you posted is the content of a variable called $users. You can walk through it by doing

    foreach ($users as $usr)
    {
      $usr['@attributes']['id'];
      $usr['name'];
    }
    

    This way, you can go through every node without worrying about the indexes.

    You may output the link on each foreach iteration in several ways. A complete example (which allows to use HTML without escaping every special character) could be:

    <?php
    foreach ($users as $usr)
    { ?>
      <a href="example.com?id=<?php echo $usr['@attributes']['id']; ?>&name=<?php echo $usr['name']; ?>"><?php echo $usr['name']; ?></a>
    
    <?php } ?>
    

    While it looks complex, with a lot of PHP opening and closing tags, it makes it easier on the markup with almost no performance penalty

    已采纳该答案
    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题