2013-08-06 15 views
2

有沒有一個函數/方法我不知道,避免在數組翻轉時移除類似的鍵。下面的例子:數組翻轉衝突問題

原始數組:

Array ([last_modified] => input [published] => input [project_content] => textarea) 

隨着陣列翻轉(按鍵衝突):

Array ([input] => published [textarea] => project_content) 
+1

你想如何處理碰撞? – jh314

+0

我試圖完成的最後一件事是運行一個數組搜索來返回例如輸入。但只有當我切換值以便輸入是關鍵時才能運行。但如果我這樣做,我會鬆動除我的一個輸入之外的所有內容。 – Alex

+0

@Alex:所以你想要所有具有「'輸入」值的鍵?在這種情況下,'array_keys($ array,「input」)'完全符合你的要求。 – Jon

回答

4

如果你想保留你的鑰匙,你可以有兩個二維陣列:

<?php 
$arr = array ('last_modified' => 'input', 'published' => 'input', 'project_content' => 'textarea'); 
$result = array(); 
foreach($arr as $k => $v) { 
    if (array_key_exists($v, $result)) { 
     $result[$v][] = $k; 
    } else { 
     $result[$v] = array($k);   
    } 
} 
print_r($result); 
?> 

This will print out:

Array 
(
    [input] => Array 
     (
      [0] => last_modified 
      [1] => published 
     ) 

    [textarea] => Array 
     (
      [0] => project_content 
     ) 

) 
+0

真棒。正在嘗試使用array_keys和array_values來計算所有這些瘋狂的東西,並計算不同之處。我想知道是否可以向我發送關於如何獲得字段名的數組的方法,在這種情況下,是「last_modified」還是「published」?所以基本上是輸入數組的'array_values'。 – Alex

+0

像這樣:'$ arrayInput = array_values($ result ['input']);'? – Alex

+0

'$ result ['input']'應該足夠了 – jh314

1

有一個死的簡單方式來獲得有使用標準功能array_keys"input"在陣列中的所有鍵:

$keys = array_keys($array, "input"); 

這是所有; see it in action

+0

Jon這不正是我所問的,但我很欣賞這種努力。給予好評。 – Alex