哪个是在PHP中删除关联数组的中间元素的最佳方法?

Jim*_*mit 1 php

请告诉我在PHP中取消设置关联数组的中间元素的最佳方法是什么?

假设我有一个10,000个元素的数组,我想删除该数组的中间元素,这是删除中间元素的有效方法吗?

$temp = array('name1'=>'value1','name2'=>'value2',...,'name10000'=>'value10000');
$middleElem = ceil(count($temp) / 2);
$i = 0; 
foreach ($temp as $key=>$val) {
if ($i == $middleElem) {
 unset($temp[$key]);
 break; 
}
$i++;
}

以上代码有效的方式?

Nie*_*sol 6

$temp = Array("name1"=>"value1","name2"=>"value2",...,"name10000"=>"value10000");
$middleElem = ceil(count($temp)/2);
$keys = array_keys($temp);
$middleKey = $keys[$middleElem];
unset($temp[$middleKey]);
Run Code Online (Sandbox Code Playgroud)

有^ _ ^

  • 呃嗯?不正确...以三个项目为例.您认为哪个项目未设置? (3认同)

Shi*_*dim 5

考虑$array是你的数组,如果它具有奇数个元素,则此代码将删除中间元素.如果它的事件它将删除2个中间元素中的第一个.

$i = round(count($array)/2) - 1;
$keys = array_keys($array);
unset ($array[$keys[$i]]);
Run Code Online (Sandbox Code Playgroud)

测试结果: http ://ideone.com/wFEM2

你需要弄清楚的是当你有一个具有偶数元素的数组时你想要做什么.你想要得到什么元素?

上面的代码选择'lower'元素,代码可以很容易地编辑,使它选择'更高'元素.你唯一需要检查的是(所有其他答案都没有做到)如果你有三个元素会发生什么.它没有选择中间元素,但是最后一个.所以你必须为此添加一个检查.