2012-08-22 63 views
2

假設我有以下陣列:扔掉整個數組,但第一項

$array(
    '32' => array('name' => 'paul', 'age' => 43), 
    '17' => array('name' => 'eric', 'age' => 19), 
    '99' => array('name' => 'dave', 'age' => 65) 
) 

我只在第一$array項目感興趣:

$array2 = array('key'=> 32, 'name' => 'paul', 'age' => 43) 

什麼是實現最有效的方法這個?換句話說,我可以用一個命令拋出$ array的所有其他項目嗎?

+0

難道你希望你的第一個元素與'key'延長? – biziclop

回答

10

使用array_shift()

array_shift()移動所述陣列的所述第一值開始並返回它, 由一個元件縮短陣列和移動都記錄下來。所有 數字陣列鍵將被修改爲從零開始計數 而文字鍵不會被觸摸。

$array2 = array_shift($array); 

這意味着,現在$array2保持第一元件,而$array保持元件的其餘部分。

1
$newArr = reset($array); 

我認爲這沒有問題。

+0

'[0]'在這個例子中不是一個有效的密鑰,所以不會起作用 –

+0

@AaronW。沒錯,我只是編輯了我的答案。 – oopbase

+0

這將產生一個數組,其中包含一個零的鍵的另一個數組。只要執行'$ newArr = reset($ array);'會更多的是OP所尋找的,我認爲(減去'key'鍵)。 –

2

試試這個

$array2 = array_shift($array); 
0

有2個選項,真的。要麼你可以在陣列

$array2 = $array[0]; 

在選擇第一項或者你可以使用array_slice作爲

$array2 = array_slice($array, 0, 1); 
0

reset婷數組也返回的第一個元素(end()返回最後一個):

$first = reset($array); 

http://www.php.net/manual/en/function.reset.php

但生成你想要的確切結果,你可以寫這樣的事情

foreach($array as $k => $first){ // get first sub-array and its key 
    $first['key'] = $k; // add the key 
    break;    // we don't care about the other elements, goodbye 
} 

Futuregeek的方法固定:

$first = 

    // returns first element, and sets it as the current element for key() 
    reset($array) 

    // instead of array_merge, (sometimes) you can use the + operator 
    + 

    // key() will return the appropriate key after reset() 
    array('key' => key($array)); 
0

Array_shift可能是最好的辦法。但只是爲了好玩這裏是另一種方式。

$first_element = end(array_reverse($array)); 
0
$k = array_merge(array('key' => key($array)), array_shift($array)); 

返回指定格式。

key讓你的第一個鍵,array_shift讓你的第一個值,併合並使用array_merge

+1

Shorter +重置數組:'$ k = reset($ array)+ array('key'=> key($ array));':) – biziclop

0
Try It : 


$arr = array(
    '32' => array('name' => 'paul', 'age' => 43), 
    '17' => array('name' => 'eric', 'age' => 19), 
    '99' => array('name' => 'dave', 'age' => 65) 
); 

foreach($arr as $key => $value) 
{ 
    $result[$key] = $value; 
    break; 
} 
print_r($result); 

##-------Secount Way If you don't want Key 32-------------------------- 

$arr = array(
    '32' => array('name' => 'paul', 'age' => 43), 
    '17' => array('name' => 'eric', 'age' => 19), 
    '99' => array('name' => 'dave', 'age' => 65) 
); 

$arr = array_reverse($arr); 
print_r(end($arr)); 

#------ Third Way If you don't want Key 32 ------------- 

echo "<br>=======<br>"; 

$arr = array(
    '32' => array('name' => 'paul', 'age' => 43), 
    '17' => array('name' => 'eric', 'age' => 19), 
    '99' => array('name' => 'dave', 'age' => 65) 
); 

$array2 = array_shift($arr); 
print_r($array2); 
+0

'end'的對面是'reset',你不需要必須扭轉陣列!見http://www.php.net/manual/en/function.reset.php – biziclop