如何从字符串中删除数组元素

How delete array elements from string

我需要从字符串中删除数组中的键。

字符串是 translations.fr

数组是

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

结果必须是:

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

我认为,使用 exlpodeunset 是个好方法。

你能帮帮我吗?谢谢

试试这个

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

试试这个:

如果要替换同一个数组,将"fr"完全删除

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

如果要保留之前的数组,在新的数组中保存修改

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

我想这就是您要找的:

$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

这会访问数组中的 'translations' 键

$array[$exploded[0]]

这会访问 'translations'

中的 'fr' 键
$array[$exploded[0]][$exploded[1]]

这就像写作:$array['translations]['fr']

解决方案:

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];
            }
        }
    }
}