PHP, если массив имеет другой массив - PullRequest
0 голосов
/ 06 июня 2018

Кажется странной материей.Есть ли способ обнаружить array, который содержит sub-array в php, такое понятие parent-child в css, jquery.Я хочу вставить данные, только если array имеет subarray

Динамическое меню

<?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>

upload.php

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

    }

Ответы [ 2 ]

0 голосов
/ 06 июня 2018

в вашем случае вы должны сделать это легко с помощью следующего метода

<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
        }
}
0 голосов
/ 06 июня 2018

Вы можете использовать функцию is_array, чтобы увидеть, является ли переменная массивом, если вы хотите выполнить рекурсивную проверку, вы можете использовать array_walk_recursive с is_array в качестве обратного вызова.

Примечание: Если вы используете array_walk_recursive, он будет выполнять обратный вызов для элементов, которые не являются массивами, так что вы можете сравнить то, что возвращаетсяс array_walk_recursive против исходного массива, чтобы узнать все эти элементы, которые являются массивами.Тем не менее, is_array кажется более простым вариантом.

Живой пример

Repl

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...