multidimentional数组到PHP中的if else语句

时间:2016-06-17 02:02:17

标签: php jquery html arrays if-statement

先生,对不起我的英语不好。

这里我有一些PHP问题。我如何从 ul li 标签创建/打印( if else )声明。

我有一个像这样的多维数组:

$arr = array(
    array('id' => 1, 'parent' => 0, 'data' => '1.1');
    array('id' => 2, 'parent' => 0, 'data' => '1.2');
    array('id' => 3, 'parent' => 1, 'data' => '1.1.1');
    array('id' => 4, 'parent' => 1, 'data' => '1.1.2');
    array('id' => 5, 'parent' => 2, 'data' => '1.2.1');
    array('id' => 6, 'parent' => 2, 'data' => '1.2.2');
    array('id' => 7, 'parent' => 5, 'data' => '1.2.1.1');
    array('id' => 8, 'parent' => 5, 'data' => '1.2.1.2');
);

然后从上面的数组我需要一些应该回显/打印语句的代码( IN STRING FORMAT以节省变量):

$str ='if (1.1) {
    if (1.1.1) {

    } else {

    }
} else {
    if (1.2.1) {
        if (1.2.1.1) {

        }
        else {

        }
    } else {

    }
}';

感谢您的帮助...... :)

2 个答案:

答案 0 :(得分:0)

你必须使用这样的变量来创造条件:

if ($val == "1.1") {
  //do the child if
}

PHP不会执行此操作:

if (1.1) {
}

答案 1 :(得分:0)

第一步,使用来自父ID的密钥创建包含子节点的新数组。

$new_arr = array();
foreach($arr as $a){
    $new_arr[$a['parent']][] = $a;
}

之后,您可以使用递归函数访问new_array ..

function rec_child($arr){
    global $new_arr;
    foreach($arr as $a){
        echo "<li>".$a['data']."</li>";
        if(!empty($new_arr[$a['id']])){         
            echo "<ul>";
            rec_child($new_arr[$a['id']]);
            echo "</ul>";
        }
        echo "";
    }
}

所以,这样调用rec_child函数..

echo "<ul>";
rec_child($new_arr[0]);
echo "</ul>";

希望得到这个帮助。