如何从数组中删除特定的键? PHP
我想从数组中删除键。如何从数组中删除特定的键? PHP
这是我从印刷print_r($猫)得到的;
Array
(
[0] => <a href="/website/index.php/Category:All" title="Category:All">All</a> > <a href="/website/index.php/Category:Computer_errors" title="Category:Computer errors">Computer errors</a> > <a href="/website/index.php/Category:HTTP_status_codes" title="Category:HTTP status codes">HTTP status codes</a> > <a href="/website/index.php/Category:Internet_terminology" title="Category:Internet terminology">Internet terminology</a>
[1] =>
<a href="/website/index.php/Category:Main" title="Category:Main">Main</a>
)
我想用这个来从阵列
function array_cleanup($array, $todelete)
{
foreach($array as $key)
{
if (in_array($key[ 'Main' ], $todelete))
unset($array[ $key ]);
}
return $array;
}
$newarray = array_cleanup($cats, array('Main'));
仅供参考我是新来的PHP删除“主”的范畴......很显然,我看到,我犯过错误,但我已经尝试了很多事情,他们似乎只是不工作
主要不是数组的元素,其数组的元素的一部分
function array_cleanup($array, $todelete)
{
$cloneArray = $array;
foreach($cloneArray as $key => $value)
{
if (strpos($value, $todelete) !== false)
unset($array[ $key ]); //$array[$key] = str_replace($toDelete, $replaceWith, $value) ; // add one more argument $replaceWith to function
}
return $array;
}
编辑:
与阵列
function array_cleanup($array, $todelete)
{
foreach($todelete as $del){
$cloneArray = $array;
foreach($cloneArray as $key => $value)
{
if (strpos($value, $del) !== false)
unset($array[ $key ]); //$array[$key] = str_replace($toDelete, $replaceWith, $value) ; // add one more argument $replaceWith to function
}
}
return $array;
}
$newarray = array_cleanup($cats, array('Category:Main'));
诚征注意,虽然接受的答案工作有一个内置在处理这个叫array_filter PHP函数。对于这个特殊的例子它会是这样的:
public function arrayRemoveMain($var){
if (strpos($var, "Category:Main") !== false) { return false; }
return true;
}
$newarray = array_filter($cats, "arrayRemoveMain");
显然有很多方法可以做到这一点,接受的答案很可能尤其是如果有大量的$ todelete选项最为理想的情况。使用内置的array_filter,我不知道传递其他参数的方法,如$ todelete,因此必须为每个选项创建一个新函数。
我与你同在!函数式编程应该更受欢迎。甚至可以将功能放在括号内!然后,为了添加对$ todelete的支持,你可以在函数参数后面创建一个带“use($ todelete)”的闭包:$ todelete =“Category:Main”; $ newarray = array_filter($ cats,function($ cat)use($ todelete){if ...}); – 2014-06-13 15:21:08
这很容易。
$times = ['08:00' => '08:00','09:00' => '09:00','10:00' => '10:00'];
$timesReserved = ['08:00'];
$times = (function() use ($times, $timesReserved) {
foreach($timesReserved as $time){
unset($times[$time]);
}
return $times;
})();
的问题是“我怎么删除特定的键”。所以这里的用滤镜阵列的答案,如果你正在寻找消除包含特定字符串键,在我们的例子中,如果我们要消除任何包含 “alt_”
$arr = array(
"alt_1"=>"val",
"alt_2" => "val",
"good key" => "val"
);
function remove_alt($k) {
if(strpos($k, "alt_") !== false) {
# return false if there's an "alt_" (won't pass array_filter)
return false;
} else {
# all good, return true (let it pass array_filter)
return true;
}
}
$new = array_filter($arr,"remove_alt",ARRAY_FILTER_USE_KEY);
#^this tells the script to enable the usage of array keys!
这将返回
阵列( “” 好键” => “VAL”);
应该是'strpos($ value,$ toDelete)!== false' – 2011-03-05 06:24:28
@tandu:谢谢。更新。 – Gaurav 2011-03-05 06:26:33
if(strpos($ value,$ toDelete)!== false)我也得到解析器错误 – user585303 2011-03-05 06:29:30