父子关系PHP


parent child relation PHP

如何创建父子关系?例如,我有一个变量,其中的数据按类别排序。

我在这里尝试的是如何编写一个可以同时搜索父函数和父函数的函数。

例如,如果有人搜索CATEGORY1,他应该返回所有的名字,如john, christoffer hansen, jonathon orkar mej, fredrik hanvensson

但是如果有人搜索 jonathon ,他应该只返回 jonathon

所以所有的数据都存储在名为$store_var的变量中,如果我打印它,我会得到这样的结果——

Array
(
    [CATEGORY1] => Array
        (
            [0] => Array
                (
                    [id] => 1002
                    [name] => john
                    [category] => CATEGORY1
                )
            [1] => Array
                (
                    [id] => 1121
                    [name] => christoffer hansen
                    [category] => CATEGORY1
                )
            [2] => Array
                (
                    [id] => 4529
                    [name] => jonatthon orkar mej
                    [category] => CATEGORY1
                )
            [3] => Array
                (
                    [id] => 4309
                    [name] => fredrik hanvensson
                    [category] => CATEGORY1
                )
        )
    [CATEGORY2] => Array
        (
            [0] => Array
                (
                    [id] => 3412
                    [name] => johanna Ottenfelt 
                    [category] => CATEGORY2
                )
            [1] => Array

任何建议都将非常非常感激。

这是你问题第一部分的函数。

function search_parent($param, $arr, $att) {
    $result = "";
    if(array_key_exists($param, $arr)) {
    for ($i =0; $i<sizeof($arr[$param]); $i++) {
        $result .= $arr[$param][$i][$att]."<br>";
    }
    }
    $domain = 'Results for:'. $param."<br>"; 
    return $domain.$result;
}
// echo search_parent('CATEGORY 1', $my, 'name');
// echo search_parent('CATEGORY 2', $my, 'name');

下面的代码也可以工作,但当我试图把它们放在一个函数中,

$first_node = array_keys($my);
foreach ($first_node as $fnk => $fnv) {
    $second_node = array_keys($my[$fnv]);
    foreach ($second_node as $snk => $snv) {
        if (in_array("John", ($my[$fnv][$snv]))) { echo "John exists"; exit(); } ;
    }
}

like that,

function search_child($param, $arr) {
$result = "";
$first_node = array_keys($arr);
foreach ($first_node as $fnk => $fnv) {
    $second_node = array_keys($arr[$fnv]);
    foreach ($second_node as $snk => $snv) {
        if (in_array($param, ($arr[$fnv][$snv]))) { 
            $result = $param. " exists"; }
       else {
            $result = $param. "does not exist in given array";
     }
    }
}
return $result;
}
//$p = 'Mile';
//echo search_child($p, $my);

它没有工作。也许我错过了什么,但我不知道是什么。尽管有成功/不成功的结果,但这不是一个好的解决方案,而只是"节省一天"。