从php多维数组中获取值

时间:2014-08-14 09:57:07

标签: php arrays multidimensional-array

我有一个像这样的数组

Array
(
    ['source'] => Array
        (
            [0] => Array
                (
                    [0] => Amharic
                )

            [1] => Array
                (
                    [0] => Azerbaijani
                )

        )

    ['target'] => Array
        (
            [0] => Array
                (
                    [0] => Assamese
                    [1] => Bengali
                )

            [1] => Array
                (
                    [0] => Bhojpuri
                    [1] => Gujarati
                )

        )

正如您所看到的那样,值正在数组中,并且这些值分为两组。一个是源头,另一个是目标。 所以对于source [0]来说,target的值是target [0] ..它就像这样 。所以对于我想要在下拉列表中获取值。所以从这个数组中,值应该像这样

<div class="test">
    <select name="source" id="">
        <option value="Amharic">Amharic</option>
    </select>

    <select name="target" id="">
        <option value="Assamese">Assamese</option>
        <option value="Bengali">Bengali</option>
    </select>
</div>

<div class="test">
    <select name="source" id="">
        <option value="Azerbaijani">Azerbaijani</option>
    </select>

    <select name="target" id="">
        <option value="Bhojpuri">Bhojpuri</option>
        <option value="Gujarati">Gujarati</option>
    </select>
</div>

获取值我正在使用我的代码

<?php foreach($language_datas as $language_data) {
                        foreach ($language_data as $lang_data) {
                            print_r($lang_data);
                        }
                    }
                    ?>

这个结果就像

Array
(
    [0] => Amharic
)
Array
(
    [0] => Azerbaijani
)
Array
(
    [0] => Assamese
    [1] => Bengali
)
Array
(
    [0] => Bhojpuri
    [1] => Gujarati
)   

)

所以有人可以告诉我如何获取引用的值。任何帮助和建议都将非常适用,

2 个答案:

答案 0 :(得分:0)

我会这样做:

<?php foreach($language_datas['source'] as $k=>$data) {
    echo '<div class="test">';
    echo '<select name="source" id="">';
        foreach($data as $point){
            echo '<option value="' . $point . '">' . $point . '</option>';
        }
    echo '</select>';

    echo '<select name="target" id="">';
        foreach($language_datas['target'][$k] as $point){
            echo '<option value="' . $point . '">' . $point . '</option>';
        }
    echo '</select>';
    echo '</div>';
} ?>

虽然这假设您将始终拥有正确的数组结构,这可能不是最好的方法,但它解决了您的问题。

答案 1 :(得分:0)

我希望我理解你的问题。那么你想要使用相同的密钥获取与源相对应的所有目标吗?

在这种情况下,请尝试以下代码:

foreach ($language_datas['source'] as $key => $source) {
    print_r($source); // Show the source array
    print_r($language_data['target'][$key]); // Show the corresponding target array
}

根据数组的创建方式,您还应该在访问($language_data['target'][$key])之前检查isset($language_data['target'][$key])是否存在。