2011-07-28 188 views
0

如何從關聯數組中提取元素?關聯數組中的提取元素

$array = array(
    "smart" => "dog", 
    "stupid" => "cat", 
    "nasty" => "frog", 
    "big" => "elephant" 
); 

我需要刪除鍵「討厭」的元素,以推動它在數組的末尾。我不知道數組中元素的索引。我怎樣才能做到這一點? (我使用第一,第二,第三,但鍵的名稱是不同的,並沒有被邏輯索引!我需要通過它的鍵刪除元素)。

+2

關聯數組並沒有真正的「結束」。你確定這對於一個非關聯數組不是更好嗎? – aroth

+0

*(reference)* http://php.net/manual/en/language.types.array.php – Gordon

+0

現在觀看示例:我需要按特定順序推送元素,因爲我使用json_encode打印數組。 –

回答

2

嘗試:

$array = array(
    "first" => "un", 
    "second" => "dos", 
    "third" => "tres" 
); 

$second = $array['second']; 
unset($array['second']); 
$array['second'] = $second; 

輸出:

array(3) { 
    ["first"]=> 
    string(2) "un" 
    ["third"]=> 
    string(4) "tres" 
    ["second"]=> 
    string(3) "dos" 
} 

編輯

$array = array(
    "first" => "un", 
    "second" => "dos", 
    "third" => "tres" 
); 
$output = array(); 

$order = array('first', 'third', 'second'); 
foreach ($order as $key) { 
    if (isset($output[$key])) { 
     $output[$key] = $array[$key]; 
    } 
} 
+0

有趣!但是我有35個字段需要排序......我將這個函數放在一個函數中,每個元素只使用一行。 –

+0

我會發布第二種方式來做到這一點。 – hsz

+0

鍵名並不意味着這種順序。現在看看這個例子!無論如何感謝您的幫助,我試圖把第一種方法放在一個函數中,但它似乎不起作用。 –

1
$array = array(
    "smart" => "dog", 
    "stupid" => "cat", 
    "nasty" => "frog", 
    "big" => "elephant" 
); 

$array += array_splice($array, array_search('nasty', array_keys($array)), 1); 

print_r($array);