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

时间:2018-08-24 20:23:22

标签: php arrays for-loop multidimensional-array

我正在尝试通过基于键提取特定的数组值来创建锚链接。我已经尝试过在for循环中使用foreach循环,但是似乎不起作用。

基于下面的多维数组,我如何遍历每个子数组以创建单独的锚链接,例如:

示例:

    /* 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 个答案:

答案 0 :(得分:0)

让我们假设您发布的数组是名为$ users的变量的内容。您可以通过做遍历

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

这样,您可以遍历每个节点而不必担心索引。

您可以通过几种方式在每个foreach迭代中输出链接。一个完整的示例(允许使用HTML而不必转义每个特殊字符)可以是:

<?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 } ?>

虽然看上去很复杂,但带有许多PHP的打开和关闭标签,但它使标记变得更容易,几乎没有性能损失