2017-07-19 29 views
0

文字列から配列のキーを削除する必要があります。文字列から配列要素を削除する方法

文字列translations.fr

アレイは

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

結果がでなければならないです:exlpodeunsetを使用して

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

私が思うには、良い方法です。

私を助けることができますか?感謝の

+2

はその –

+0

'解除($ translation_arr [ 'FR'])のためのPHPの設定を解除()メソッドを使用します;'動作します。 –

+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] = translations; $ keys [1] = fr;これであなたはキーを得ることができます – kranthi

+0

爆発は各キーで配列を与えます。私の問題は、この配列を$ array [$ key] [$ key] –

0

はこの試してみてください。あなたが同じ配列を交換し、「FR」を削除したい場合は

を完全に

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

以前を保持する場合変更を新しい配列に保存してください。

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

私は、これはあなたが探しているものだと思う: 0 =>翻訳 1 => FR

これはアクセス:explode

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

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

あなたは2つのキーを含む配列にあなたの文字列を入れてお使いのアレイ内の「翻訳」キー

$array[$exploded[0]] 

、これは内「FR」キーにアクセスする「翻訳」

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

それは書き込みのようだ:$array['translations]['fr']

関連する問題