PHP搜索嵌套数组以按名称删除元素

时间:2012-12-10 11:21:11

标签: php multidimensional-array

我之前从未真正使用过PHP数组,因为我过去只使用过数据库,所以我正在扩大我的视野。基本上我有一个简单的嵌套数组,其中每个元素都有一个'name'和一些其他值。我正在尝试搜索数组,这是对象的一部分。我在这里看了很多以前的问题并且无法使它工作,尽管在其他情况下没有涉及到对象。我一直在尝试使用'needle / haystack'类型的例子,但尚未使用它。

因此,在我的People课程中,我们还有其他内容:

public $peopleArray;  // this is the array and will be protected once working

// and this is the example search function im trying to modify
public function findPerson($needle, $haystack)
{
    foreach($haystack as $key=>$value)
    {
        if(is_array($value) && array_search($needle, $value) !== false)
        {
            return $key;
        }
    }
    return 'false';
}

然后打电话给我,我现在有:

$searchResult = $People->findPerson('Bob',$people->peopleArray,'name');

我不确定我是否只是在混淆$ needle和$ value - 我需要在搜索函数中传递名称值,所以我确实在函数参数中有$ value,但这仍然是一无所获。此外,我不是100%关于'$ key => $ value'是否需要修改,因为$ key未定义。

提前感谢您的帮助。

加法 - 数组的print_r:

Array ( [0] => Person Object ( [id:protected] => 1 [name] => Bob [gender] => m ) 
[1] => Person Object ( [id:protected] => 2 [name] => Denise [gender] => f ) 
[2] => Person Object ( [id:protected] => 3 [name] => Madge [gender] => f ) ) 

1 个答案:

答案 0 :(得分:2)

如果你不得不发布一个示例数组,这会更容易,但我会给这个问题一个镜头。

对我来说,似乎你正在循环一个2D数组(嵌套数组)。

我会像这样循环遍历多维数组:

for($array as $key => $2ndArray){
    for($2ndArray as $2ndKey => $value){
        if($value == $needle){
           return true;
        }
    }
}

希望这有帮助