-2

関連する配列があります。キーが任意の長さの特定の文字列で始まるすべての要素を削除できるようにしたいと考えています。また、特定の文字列で始まるすべてのキーの名前を、残りのキーが追加された新しい文字列に変更できるようにしたいと考えています。たとえば、最初の配列が与えられた場合、"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]);
    }
}
4

2 に答える 2