PHP 多维数组根据键提取特定值[重复]

问题描述 投票:0回答:2

我试图通过基于键提取特定的数组值来创建锚链接。我尝试过在 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>
php arrays for-loop multidimensional-array
2个回答
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 开始和结束标签,它使标记变得更容易,几乎没有性能损失


0
投票

您可以使用任一方式:($array 是您的数组)

$names = array_column($array, 'name');
$ids = array_map(function($ele){return $ele['@attributes']['id'];}, $array);
© www.soinside.com 2019 - 2024. All rights reserved.