【问题标题】:php if array has another arrayphp 如果数组有另一个数组
【发布时间】:2018-11-16 10:06:40
【问题描述】:

看起来很奇怪的事情。有什么方法可以检测 php 中包含 sub-arrayarray,例如 css, jquery 中的 parent-child 概念。我只想在arraysubarray 时插入数据

动态菜单

<?php
    if(){ //loop starts
?>  
    <li>
        <input type="checkbox" name="menu[]" value="<?php echo $row['value']?>"> <?php echo $row['title'];
            <ul>
                <?php
                    if(){ //loop starts
                ?>
                <li>
                    <input type="checkbox" name="submenu[]" value="<?php echo $row1['value']?>"><?php echo $row1['subtitle'];
                </li>;
                }?>

            </ul>
    </li>
}?>

输出

<li>
    <input type="checkbox" name="menu[]" value="vehicle">
    <ul>
        <li><input type="checkbox" name="submenu[]" value="car"></li>
        <li><input type="checkbox" name="submenu[]" value="bike"></li>
     </ul>
</li>
<li><input type="checkbox" name="menu[]" value="sport"></li>

上传.php

$data = explode("," ,$_POST["menu"]); 
$subdata = explode("," ,$_POST["submenu"]);
foreach ($data AS $key => $menu){
    if(){         // This Menu has subarray

    }

【问题讨论】:

    标签: php arrays checkbox sub-array


    【解决方案1】:

    你可以使用is_array函数来查看一个变量是否是一个数组,如果你想递归检查那么你可以使用array_walk_recursiveis_array作为回调。

    注意:如果您使用array_walk_recursive,它将对非数组的项目运行回调,因此您可以将array_walk_recursive返回的与原始数组进行比较以找出所有那些是数组的项目。但是,is_array 似乎是更简单的选择。

    现场示例

    Repl

    【讨论】:

    • 谢谢,我使用了 is_array 函数,但它认为一个人的sub arraycommon subarray。例如,在我的问题中,一个菜单有子菜单,另一个没有。 if(is_array($data)){} 在包含subarraynon subarray 的两个数组中插入数据。我是array_walk_recursive 的新手。请提供任何使用此的演示,希望这会有所帮助
    【解决方案2】:

    在您的情况下,您必须使用以下方法轻松完成

    <li>
            <input type="checkbox" name="menu[0][]" value="vehicle">
            <ul>
                <li><input type="checkbox" name="submenu[0][]" value="car"></li>
                <li><input type="checkbox" name="submenu[0][]" value="bike"></li>
             </ul>
        </li>
        <li><input type="checkbox" name="menu[1][]" value="sport"></li>
            <ul>
                <li><input type="checkbox" name="submenu[1][]" value="cricket"></li>
                <li><input type="checkbox" name="submenu[1][]" value="football"</li>
             </ul>
    

    然后从后端,你可以这样做

    foreach($_POST['menu'] as $key=>$val) {
            if(is_array($val) && count($val)) {
               //do action
            }
    }
    

    【讨论】:

    • 似乎它会很容易和最好的答案,但我有使用 loop 生成的动态列表,请帮助如何增加数字,即 menu[0][], menu[1][]....menu[5][] 作为答案中的输出。请看我更新的问题我把我的动态代码
    猜你喜欢
    • 1970-01-01
    • 2015-08-28
    • 2017-12-24
    • 2015-08-07
    • 2015-09-19
    • 2013-08-21
    • 1970-01-01
    • 1970-01-01
    • 2014-05-01
    相关资源
    最近更新 更多