我不确定使用迭代器是否比“手动”更快,但你可以使用 RecursiveArrayIterator - http://php.net/manual/en/class.recursivearrayiterator.php
$arr = array(
array('id' => 1, 'par' => 5),
array('id' => 2, 'par' => 5),
array('id' => 3, 'par' => 5),
array('id' => 4, 'par' => 7),
array('id' => 5, 'par' => 7),
array('id' => 6, 'par' => 7),
array('id' => 7, 'par' => 9),
array('id' => 8, 'par' => 9),
);
$arrayIterator = new RecursiveIteratorIterator(new RecursiveArrayIterator($arr));
foreach ($arrayIterator as $subKey=>$subValue) {
if ($subKey == 'par' && $subValue == 9) {
$validArray = iterator_to_array($arrayIterator->getSubIterator());
$id = $validArray['id']; // This is your return array
break;
}
}
但是,老实说,手动操作可能更容易理解和调试,并且对于 2000 条记录 - 为什么要为比以下更复杂的事情烦恼:
foreach($arr as $subArray) {
if ($subArray['par'] == 9) {
$id = $subArray['id'];
break;
}
}
如果您正在处理更多记录,或者拥有 Facebook 的普及,那么就开始认真起来。但有时保持简单是最好的方法。