如何在两个以上的数组中比较键和值?

时间:2016-06-01 10:37:50

标签: php

我在嵌套的foreach条件下比较三个数组。以下是数组

    Array
(
    [master/city] => City
    [master/national_holiday] => National Holiday
    [master/operator_comments] => Operator Comments
    [master/sensors] => Sensors
    [master/modbus] => Modbus
    [master/manufacturers] => Manufacturers
    [master/make_model] => Make Model
    [master/dispatch_vendors] => Dispatch Vendors
)      

    Array
(
    [1] => View
    [2] => Write
)

Array
    (
        [master/city] => 1
        [master/national_holiday] => 2
        [master/operator_comments] => 1
        [master/sensors] => 2
        [master/modbus] => 1
        [master/manufacturers] => 2
        [master/make_model] => 1
    )

现在的情况如下: -

我的第一个foreach迭代第一个数组

然后在同一个foreach中我使用第二个foreach来表示第二个数组 再次在第二个foreach我使用第三个foreach迭代第三个数组

在第三个foreach中,我将第一个数组的键与第二个数组的键进行比较,并将第二个数组的值与第三个数组的键进行比较

如果符合上述条件,则在我的下拉列表中,特定选项会附加已选择,如<option value="1" selected="">View</option>

我正在使用以下代码

<?php
                    $first_array =  first_array();
                    $i = 1;
                    foreach($first_array as $k => $val) {
                    ?>
                    <tr>
                      <td>{{ $i }}</td>
                      <td class="mailbox-name">{{ $val }}</td>
                      <td><?php $second_array =  second_array(); ?>
                            <select class="form-control master-menu" name="master_menu[{{$k}}]">
                              <option value="">Select Role</option>
                                <?php

                                    foreach ($second_array as $key => $value) {
                                        foreach ($third_array as $mkey => $mval) {
                                ?>
                                <option value="<?php echo $key; ?>"
                                    <?php if (($mkey == $k) && ($mval == $key)) { echo "selected"; } ?>><?php echo $value; ?></option>
                                <?php } } ?>
                            </select>
                      </td>
                    </tr>
                    <?php $i++;  } ?>

我正在使用上面的代码并且在第二个数组中遇到两个值而在第三个数组中有五个值的问题因此在我的选项的下拉数中是十个两个。 这是我的输出。 enter image description here

请建议我。

2 个答案:

答案 0 :(得分:1)

也许是这样的?我简化了流程来演示正在发生的事情。我还添加了正确的选择值:

foreach ($first_array as $key => $value) {
?>

    <p><?php echo $value; ?></p>


    <?php foreach ($second_array as $second_key => $second_value) { ?>



        <?php if ($key == $second_key) { ?>
            <select>    

                <?php foreach ($third_array as $third_key => $third_value) { ?>

                    <option <?php echo ($third_key == $second_value ? 'selected=selected' : null); ?>><?php echo $third_value; ?></option>

                <?php } ?>



            </select>

        <?php } else { ?>

            <select>    

                <?php foreach ($third_array as $third_key => $third_value) { ?>

                    <option ><?php echo $third_value; ?></option>

                <?php } ?>



            </select>

        <?php } ?>


   <?php } ?>


<?php
}

答案 1 :(得分:0)

例如,您可以尝试此代码

foreach ($tmparray as $innerarray) {
    //check type
    if (is_array($innerarray)) {
        //echo through inner loop
        foreach ($innerarray as $value) {
            echo $value;
        }
    } else {
        //one,two,three
        echo $innerarray;
    }
}