取消设置在此特定示例中不起作用

时间:2018-05-05 18:28:06

标签: php

我有一个项目,我需要在7月之前完成,这是为了学校。 在我开始遇到来自数据库的数组问题之前,一切顺利。 请记住,这是我第一次使用PHP,而我正在学习:

我的数据库有一个名为“Pessoas”的表,另一个名为“Pessoas_Pessoas”。第二个是保留“Pessoas”表中条目之间关系的记录(例如,如果ID 1与ID 2有关系,则信息将保留在“Pessoas_Pessoas”中)。 棘手的部分是我应该使用PHP来防止用户重复关系。 一个很好的例子是Facebook的朋友系统: 如果我和约翰成为朋友,那么他的个人资料就不会出现在“你可能知道的人”部分。

由于我使用的是MVC和Slim Framework,我设法从模型上的数据库中得到了我想要的东西,但我在Controller上遇到了这个问题:

This is an image from the table "Pessoas_Pessoas", being id_PessoasA the id of the profile being visualized and id_PessoasB the id of the profile I'm trying to make a relationship with

我设法得到5个配置文件来测试这个功能,我设法得到这些关系,但问题是,当我尝试验证每个配置文件的id是否相同时,id_PessoasB然后从数组中取消设置,但它即使条件为真,也只能工作一次。这是代码:

foreach ($resultadoRelacao as $key => $value) {
    foreach ($resultadoRelacao0 as $key0 => $value0) {
        if ($value0['id'] == $value['id_PessoasB']) {
            $indice = array_search($value0['id'], $resultadoRelacao0);
            unset($resultadoRelacao0[$indice]);
        }
    }
}

感谢您的时间,如有需要请随时提出。我不太确定我需要什么,我被困了两个星期。

2 个答案:

答案 0 :(得分:0)

当您使用foreach()遍历数组并且您已将元素与您要查找的元素匹配时,您可以使用该值的键值(在本例中为$key0foreach()删除您当前正在查看的元素...

foreach ($resultadoRelacao as $key => $value) {
    foreach ($resultadoRelacao0 as $key0 => $value0) {
        if ($value0['id'] == $value['id_PessoasB']) {
            unset($resultadoRelacao0[$key0]);
        }
    }
}

答案 1 :(得分:-1)

foreach ($resultadoRelacao as $key => $value) {
    foreach ($resultadoRelacao0 as $key0 => $value0) {
        if ($value0['id'] == $value['id_PessoasB']) {
            if(($indice = array_search($value0['id'], $resultadoRelacao0)) !==false){

            unset($resultadoRelacao0[$indice]);
           }
        }
    }
}