我需要从一个带有字符串结构的关联数组中删除一个元素。
示例:
$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");
答案 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
)