父子关系PHP

时间:2015-10-09 22:47:15

标签: php

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

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

例如 - 如果有人搜索 CATEGORY1 ,他应该撤回所有名称,例如 - john,christoffer hansen,jonatthon orkar mej,fredrik hanvensson

但如果有人搜索 jonatthon ,他应该只获得 jonatthon

因此所有数据都存储在名为$ 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

任何建议都会非常明显。谢谢你提前。

1 个答案:

答案 0 :(得分:1)

这是问题第一部分的功能。

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(); } ;

    }
}
像那样,

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);

它没有用。可能我错过了一些东西,但我不知道它是什么。尽管取得了所有成功/不成功的结果,但这不是一个好的解决方案,而只是“节省一天的时间”。