2017-07-19 128 views
0

我需要從字符串中刪除數組中的某個鍵。如何從字符串中刪除數組元素

字符串是translations.fr

陣列是

[ 
    ..., 
    translations => [ 
      fr => [ 
       ... 
      ], 
      es => [ 
       ... 
      ] 
    ], 
    ..., 
] 

結果必然是:

[ 
    ..., 
    translations => [ 
      es => [ 
       ... 
      ] 
    ], 
    ..., 
] 

我認爲,使用exlpodeunset是很好的方式。

你能幫我嗎?感謝的

+2

使用PHP未設置()方法爲 –

+0

'未設置($ translation_arr [ 'FR']);'會工作。 –

+0

試試這個,https://stackoverflow.com/questions/369602/delete-an-element-from-an-array – dadan

回答

0

解決方案:

public function deleteKeyV3($keyToDelete) { 
    $keys = explode('.', $keyToDelete); 
    $result = &$array; 

    foreach ($keys as $key) { 
     if (isset($result[$key])) { 
      if ($key == end($keys)) { 
       unset($result[$key]); 
      } else { 
       $result = &$result[$key]; 
      } 
     } 
    } 
} 
2

試試這個

unset(ArrayName[key][key].....) 
+0

是的,但是如何從字符串構建key [key] [key]? –

+0

$ keys = explode('。',「translations.fr」); $ keys [0] =翻譯; $ keys [1] = fr;在這裏你可以得到鑰匙 – kranthi

+0

爆炸給每個關鍵的數組。我的問題是將這個數組轉換爲$ array [$ key] [$ key] –

0

試試這個:

如果你想更換同一陣列並刪除「FR」完全

$translationArray = unset($translationArray['fr']); 

如果要保留以前的數組並將其保存在新的變化中

$translationArrayNew = unset($translationArray['fr']); 
0

我認爲這是你在找什麼:

$str = 'translations.fr'; 
$exploded = explode('.', $str); 
$array = [ 
     'translations' => [ 
       'fr' => 'fr value', 
       'es' => 'es value', 
       ] 
     ]; 

unset($array[$exploded[0]][$exploded[1]]); 

隨着explode你把你的串入含2個鍵的數組: 0 =>翻譯 1 => FR

該項訪問「翻譯」您的陣列內的關鍵

$array[$exploded[0]] 

這個訪問中的「FR」鑰匙「翻譯」

$array[$exploded[0]][$exploded[1]] 

它就像寫:$array['translations]['fr']