2011-11-03 51 views
0

我必须创建一个函数,只用不均匀的键复制数组(我传递给函数)。例如:如何从数组中获得不均匀的键?

$a = array(
    '0' => '0', 
    'one => 'one', 
    '1' => '1', 
    'two' => 'two' 
) 

我得:

$result = array(
    'one => 'one', 
    'two' => 'two' 
) 

我已经创建了后续的功能,它的工作原理,但也许我需要优化它(也许存在做这件工作的函数)。建议吗?

private clean($values){ 
    $vv = array();    
    $keys = array_keys($values);   

    for($i=1; $i < count($values); $i+=2) $vv[$keys[$i]] = $values[$keys[$i]];    
    return $vv; 
} 

感谢

+0

你是什么意思“不均衡”的关键?你的意思是每一个其他的关键?如果阵列是数组('0'=>'0', 'one =>'one', 'two'=>'two', '1'=>'1') – liquorvicar

+0

@livvvicar ,这并不重要,我必须得到key =>数组的值与这些索引:1 - 3 - 5 - 7 etc等 – Dail

+0

但你在你的例子中拉出的索引是'一'和'二'。你想在数组中的那些位置键/值对?顺便说一句,如果这是一个功课问题,请标记为这样。 – liquorvicar

回答

2
$even = range(0, count($array), 2); 

source

UPDATE

for ($i = 0, $c = count($array); $i <= $c; $i = $i + 2) { 
    $even = array_push($even, $array[$i]); 
} 
+0

+1为简洁起见。 – Artefact2

+0

@ZoltanToth,谢谢!只有一个小错误:范围(1,count($ array),2); – Dail

+0

不等,一会儿......它只返回一个数组,等等等等,我需要相应的key =>原始数组的值。不仅是这些数字 – Dail

-1

尝试

$outputArray = array(); 
$keyToAdd = false; 
foreach($inputArray as $key => $value) { 
    if($keyToAdd) { 
     $outputArray[$key] = $value; 
    } 
    $keyToAdd = !$keyToAdd; 
}