henio
27.09.2011, 15:12:48
Czy istnieje funkcja która zmieni nazwę klucza w tablicy asocjacyjnej, np dodając jakiś prefiks. Albo wykona tą operację dla wszystkich kluczy.
darko
27.09.2011, 15:17:28
Jeden temat wystarczy
http://forum.php.pl/index.php?showtopic=184879&hl=. Nawet jeśli nie istnieje, to w kilkanaście sekund możesz napisać własną. Nawet zwykły foreach załatwia sprawę:
$prefix = 'test_';
foreach($mojaTablica as $klucz => $wartosc)
{
$nowaTablica[$prefix . $klucz] = $wartosc;
}
Tadaaam
henio
27.09.2011, 15:35:43
No tak, tylko to trochę pamięci się marnuje na to. Ta funkcja po prostu dubluje elementy w tablicy. Chciałbym wiedzieć czy można to zrobić bez tworzenia nowej tablicy, lub nowego pola w tablicy isteniejącej. Tylko edycja nazwy.
cycofiasz
27.09.2011, 16:16:49
$prefix = 'test_';
foreach($mojaTablica as $klucz => $wartosc)
{
unset($mojaTablica[$klucz]);
$mojaTablica[$prefix . $klucz] = $wartosc;
}
henio
27.09.2011, 18:19:53
Czy przypadkiem ten kod nie powoduje zapętlenia? Przecież w każdym obrocie pętli dodajesz nowy element do tablicy. A pętla działa aż przejdzie wszystkie elementy tablicy, wiec będzie także przeglądać ten nowo dodane.
cycofiasz
27.09.2011, 18:32:04
Gdyby powodował to bym go nie wstawiał. Przetestuj go sam.
Cytat
foreach operates on a copy of the specified array and not the array itself
darko
27.09.2011, 19:39:03
array_walk operuje bezpośrednio na tablicy, a o zużycie pamięci się nie martw.