2

我以前从未真正使用过 PHP 数组,因为我过去只使用过数据库,所以我稍微拓宽了视野。基本上我有一个简单的嵌套数组,其中每个元素都有一个“名称”和一些其他值。我正在尝试搜索作为对象一部分的数组。我在这里查看了许多以前的问题,但无法使其正常工作,尽管在其他情况下没有涉及对象。我一直在尝试使用 '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 ) ) 
4

1 回答 1

2

好的,如果您必须发布一个示例数组,这会容易得多,但我会试一试这个问题。

对我来说,您似乎正在循环一个二维数组(嵌套数组)。

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

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

希望这可以帮助

于 2012-12-10T11:30:59.033 回答