我之前从未真正使用过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 ) )
答案 0 :(得分:2)
如果你不得不发布一个示例数组,这会更容易,但我会给这个问题一个镜头。
对我来说,似乎你正在循环一个2D数组(嵌套数组)。
我会像这样循环遍历多维数组:
for($array as $key => $2ndArray){
for($2ndArray as $2ndKey => $value){
if($value == $needle){
return true;
}
}
}
希望这有帮助