【问题标题】:How delete array elements from string如何从字符串中删除数组元素
【发布时间】:2017-12-24 08:26:36
【问题描述】:

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

字符串是translations.fr

数组是

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

结果必须是:

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

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

你能帮帮我吗?谢谢

【问题讨论】:

  • 为此使用 php unset() 方法
  • unset($translation_arr['fr']); 会起作用。
  • @NanaPartykar 是的,但是如何从字符串构建密钥 ['fr'] ?
  • 粘贴你的工作代码@NicolasLamblin

标签: php arrays unset


【解决方案1】:

解决方案:

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】:

    我想这就是你要找的东西:

    $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']

    【讨论】:

      【解决方案3】:

      试试这个:

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

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

      如果您想保留之前的数组并将更改保存到新数组中

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

      【讨论】:

        【解决方案4】:

        试试这个

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

        【讨论】:

        • 是的,但是如何从字符串构建密钥 [key][key] ?
        • $keys = explode('.',"translations.fr") ; $keys[0] = 翻译; $keys[1] = fr;在这里你可以得到钥匙
        • explode 为每个键提供一个数组。我的问题是在 $array[$key][$key] 中转换这个数组
        • 试试这个 $keys = explode('.',"translations.fr") ; $keys[0] -> 翻译; $keys[1] -> fr; ... unset(${$keys[0]}[$keys[1]]); // ${arrayname}[key]
        猜你喜欢
        • 1970-01-01
        • 2015-06-23
        • 2022-11-16
        • 2020-08-29
        • 2020-05-29
        • 2012-03-27
        • 1970-01-01
        • 2023-04-09
        • 1970-01-01
        相关资源
        最近更新 更多