如何定位数组中的对象?

How do I target an object inside an array?

我在 php 中得到以下数组:

$myarray = array(
            array('normaal' => _("Normale versie"),'extra' => "Wel rillen"),
            array('aangepast' => _("De aangepaste versie"),'extra' => "Niet rillen")
         );

我正在尝试在 HTML 中获得以下输出:

<div class="container">
    Normale versie
    <br>
    Wel rillen
</div>
<div class="container">
    De aangepaste versie
    <br>
    Niet rillen
</div>

我试过像这样用 foreach 循环来循环数组:

foreach ($myarray as $key => $value) {
    echo '<div class="container">';
    echo $value[0];
    echo '<br>';
    echo $value['extra'];
    echo '</div>';
}

希望 $value[0] 以数组中第一个对象的值为目标。然而,这针对整个对象,因此 returns 什么都没有。导致以下错误输出:

<div class="container">

    <br>
    Wel rillen
</div>
<div class="container">

    <br>
    Niet rillen
</div>

我不知何故需要通过它的对象名称来定位第一个数组项,这个对象名称对于每个数组项都是不同的,我该如何在不知道对象名称是什么的情况下定位它的内容?

对于您的情况,使用 key() 获取密钥名称,如:

foreach ($myarray as $key => $value) {
    echo '<div class="container">';
    echo $value[key($value)];
    echo '<br>';
    echo $value['extra'];
    echo '</div>';
}

你有一个关联数组,没有索引。所以你的数组实际上不包含“0”元素。但是您可以通过调用 first() 函数来获取嵌套数组的第一个元素。 您的代码将如下所示:

foreach ($myarray as $key => $value) {
    echo '<div class="container">';
    echo first($value);
    echo '<br>';
    echo $value['extra'];
    echo '</div>';
}

我相信这是一个二维数组。

第一个 [] 是数组对象的位置,第二个 [] 是项目在对象数组中的位置。

foreach ($myarray as $key => $value) {
    echo '<div class="container">';
    echo $value[0][0];
    echo '<br>';
    echo $value[0]['extra'];
    echo '</div>';
}

使用这个

foreach ($myarray as $key => $value) {
    echo '<div class="container">';
    echo first($value);
    echo '<br>';
    echo $value['extra'];
    echo '</div>';
}
<?php
$myarray = array(
    array('normaal' => "Normale versie", 'extra' => "Wel rillen"),
    array('aangepast' => "De aangepaste versie", 'extra' => "Niet rillen")
);
foreach ($myarray as $key => $value) {
    echo '<div class="container">';
    reset($value);
    echo $value[key($value)];
    echo '<br>';
    echo $value['extra'];
    echo '</div>';
}