我有一个关联的数组。我希望能够删除其键以任何给定长度的给定字符串开头的所有元素。我还希望能够将所有以给定字符串开头的键重命名为由键的其余部分附加的新字符串。例如,给定初始数组,删除所有以“zzz”开头的元素将导致删除数组,将所有以“zzz”开头的元素重命名为“yyyy”将导致重命名数组。
Initial Array
Array
(
[zzzaaaa] => 1
[bbbb] => 1
[cccc] => 1
[zzzdddd] => 1
)
Deleted Array
Array
(
[bbbb] => 1
[cccc] => 1
)
Renamed Array
Array
(
[yyyyaaaa] => 1
[bbbb] => 1
[cccc] => 1
[yyyydddd] => 1
)
PS。这样做的目的是存储 URS,因此如果子目录被删除或重命名,对其他目录和文件的所有引用也会被删除或重命名。
编辑。这就是我最终的结果。不知道是否有更快/更少的代码方式。
//Delete
$length=strlen($key_string);
foreach($myArray as $key=>$value) {
if(substr($key, 0, $length)==$key_string) {unset($myArray[$key]);}
}
//Rename
$length=strlen($key_string);
foreach($myArray as $key=>$value) {
if(substr($key, 0, $length)==$key_string) {
$myArray[$new_key_string.substr($key, $length)] = $myArray[$key_string];
unset($myArray[$key]);
}
}