当数组元素数量增长时,foreach会变得效率低下吗?

Jen*_*nny 1 php arrays

目前我在使用array_replace时使用foreach搜索键:

$grades = array(
               0 =>array('id'=>1, 'grade'=>4),
               1 =>array('id'=>5, 'grade'=>2), 
               2 =>array('id'=>17,'grade'=>1),
             )
$replacement = array('id'=>17,'grade'=>3);

foreach($grades as $key=>$grade){
    if($grade->id ==$replacement['id'] )
       $found = $key;
}
$new_grades = array_replace($grades, array($found_key=>$replacement));
Run Code Online (Sandbox Code Playgroud)

我想知道当$ grades数组中的元素数量增长时,这是否会变得效率低下.有没有更好的方法来搜索和替换工作?

Fel*_*ing 5

执行时间随着array(O(N))中元素的数量线性增长.使用更好的数据结构,即以关联方式使用数组,并将ID作为索引:

$grades = array(
    1 => array('grade'=>4),
    5 => array('grade'=>2), 
    17 => array('grade'=>1)
);
Run Code Online (Sandbox Code Playgroud)

然后l ookup成本是常数(O(1)).你可以做:

$grades[$replacement['id']] = array('grade' => $replacement['grade']);
Run Code Online (Sandbox Code Playgroud)

或类似的东西,取决于您的数据.