从PHP中的关联数组中删除元素

时间:2015-11-29 16:07:55

标签: php arrays

我需要从一个带有字符串结构的关联数组中删除一个元素。

示例:

$array = array(
    "one"=>array("Hello", "world"),
    "two"=>"Hi"
)

我想创建一个删除这样的元素的函数:

function removeElement($p) {
    // With the information provided in $p something like this should happen 
    // unset($array["one"]["hello"]) 
}

removeElement("one.hello");

2 个答案:

答案 0 :(得分:0)

您的基础数组是关联的,内部数组(键 [OperationContract] [ScriptMethod(ResponseFormat = ResponseFormat.Json)] [WebInvoke(Method = "POST", ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Bare, UriTemplate = "json/PostJson/")] String PostJson(); 不是,它是一个索引数组,您无法通过one访问,而是{{ 1}}。

您可以使用["hello"]函数删除[0]值,但索引将保持不变:

hello

如果您希望保持未设置并按顺序保留数组索引,则可以在取消设置后使用unset函数获取值:

$array = ['Hello', 'World'];  // array(0: Hello, 1: World)
unset($array[0]); // Array is now array(1: World)

或者您可以使用array_splice

当使用array_values作为带有点分隔符的多维数组的键时,我建议您查看laravels Arr::forget method,它几​​乎完全符合您的要求。< / p>

答案 1 :(得分:0)

这将是您问题的静态解决方案,无论如何,您需要使用explode

function removeElement($p, $array) {
    $_p = explode('.', $p);
    return unset($array[$_p[0]][$_p[1]]);
}

但请记住,如果您在$p中有更多内容(例如:foo.bar.quux

,则无效