Portal > Foren > PHP > PHP-Programmierung > Alle Array-Schlüssel umbenennen
Antwort
 
Themen-Optionen Thema durchsuchen
Alt 14.02.2007, 11:23 Nach oben    #1
Ben
Benjamin Klaile
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.516
Standard Alle Array-Schlüssel umbenennen

Hallo,
ich würde gerne alle Array-Schlüssel nach einem gewissen Muster umbenennen.

Ich habe ein Array der Form
PHP-Code:
$listItems = array(
    array(
'sample_list_item' => 'example.com''hits' => 3),
    array(
'sample_list_item' => 'example.net''hits' => 5)
); 
und würde nun gerne automatisch die Schlüssel "sample_list_item" und "hits" zu "{sample_list_item}" und "{hits}" machen.

Habe mir array_map angeschaut, aber das ist ja irgendwie nicht das, was ich brauche.

Gibt es da einen direkten Weg oder muss ich mich da mit array_keys und Co. in einer Kombination mit array_map() befassen?
Man könnte ja auch die alten Schlüssel-Wert-Paare löschen und die neuen reinschreiben, aber das finde ich irgendwie .. "unsauber"?!

Danke für die Antworten.
Grüße, Ben.
Ben ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 14.02.2007, 11:41 Nach oben    #2
Johannes Schlichenmaier
 
Benutzerbild von Jojo
 
Registriert seit: 26.08.2005
Ort: Mannheim
Beiträge: 403
Standard

Wie wär das?

PHP-Code:
function braces($n) {
  return 
preg_replace("/^(.*)$/"'{$1}'$n);
}

$original_array = array('one' => 'holla''two' => 'gracias');
$new_array array_map("braces"array_flip(array_map("braces"array_flip($original_array))));

var_dump($new_array); 
__________________
In the beginning was the word
and the word was content-type: plain/text

heute code ich, morgen debug ich und uebermorgen cast ich die koenigin auf int
Jojo ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 14.02.2007, 11:50 Nach oben    #3
Ben
Benjamin Klaile
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.516
Standard

Das hier sollte reichen:
PHP-Code:
$new_array array_flip(array_map("braces"array_flip($original_array))); 
Du hast da ein array_map zu viel drin.

Frage ist nur:
Ist das performant? Scheint mir jetzt ja irgendwie eher ein workaround der schmutzigen Sorte zu sein.

Wenn jemand noch was tolleres hat .. nehm ich gerne.
Meinungen?
Ben ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 14.02.2007, 11:59 Nach oben    #4
Johannes Schlichenmaier
 
Benutzerbild von Jojo
 
Registriert seit: 26.08.2005
Ort: Mannheim
Beiträge: 403
Standard

Zitat:
Zitat von Ben Beitrag anzeigen
Das hier sollte reichen:
PHP-Code:
$new_array array_flip(array_map("braces"array_flip($original_array))); 
Du hast da ein array_map zu viel drin.
Aso, sorry, falsch gelesen, ich dachte du willst Schlüssel und Entry in {} haben.
__________________
In the beginning was the word
and the word was content-type: plain/text

heute code ich, morgen debug ich und uebermorgen cast ich die koenigin auf int
Jojo ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 14.02.2007, 12:00 Nach oben    #5
Ben
Benjamin Klaile
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.516
Standard

Hatte die Zeile zuerst gar nicht verstanden und hatte dann bei der ausführlicheren Schreibweise, also ein Funktionsaufruf pro Zeile gemerkt, was da letztlich passiert und somit den "Fehler" entdeckt.

Kannte array_flip() gar nicht. Wieso auch immer. Eigentlich 'ne ganz nette Funktion.
Ich habe das nun mal so umgesetzt, allerdings bin ich interessiert an Alternativen.

Danke,
Grüße, Ben.
Ben ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 14.02.2007, 20:16 Nach oben    #6
Jonas
 
Benutzerbild von Artemis
 
Registriert seit: 03.06.2006
Beiträge: 244
Standard

Weiß jetzt auch nichts, ich würde aber auf jeden Fall kein preg_replace verwenden, sondern das so lösen:
PHP-Code:
function braces($sKey) {
  return 
'{'.$sKey.'}';

Dürfte "ein bisschen" performanter sein.
__________________
Applikations-Programmierung:
BlitzMax, BlitzPlus

Webentwicklung:
PHP, (X)HTML, CSS, JavaScript, MySQL


Artemis ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 14.02.2007, 20:22 Nach oben    #7
Ben
Benjamin Klaile
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.516
Standard

Das habe ich eh nicht verwendet, da ich eine eigene Methode habe, die ich dann via callback aufrufe. Aber danke
Ben ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 14.02.2007, 20:30 Nach oben    #8
Johannes Schlichenmaier
 
Benutzerbild von Jojo
 
Registriert seit: 26.08.2005
Ort: Mannheim
Beiträge: 403
Standard

Zitat:
Zitat von Artemis Beitrag anzeigen
Weiß jetzt auch nichts, ich würde aber auf jeden Fall kein preg_replace verwenden, sondern das so lösen:
PHP-Code:
function braces($sKey) {
  return 
'{'.$sKey.'}';

Dürfte "ein bisschen" performanter sein.
Ähh... Wieso einfach, wenns auch umständlich geht?

Manchmal fallem einem die einfachsten Lösungen nicht ein ^^.

__________________
In the beginning was the word
and the word was content-type: plain/text

heute code ich, morgen debug ich und uebermorgen cast ich die koenigin auf int
Jojo ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 14.02.2007, 20:38 Nach oben    #9
Bastian Fenske
 
Registriert seit: 04.01.2006
Ort: Kassel
Beiträge: 853
Standard

Hi.

array_flip() ist natürlich nicht ungefährlich, da es Fehler gibt, wenn ein Wert mehrfach auftaucht.

Ich kanns hier grad nicht testen: Kann man das zweite Argument der Callback-Funktion von array_walk() nicht als Referenz definieren?

Wenn ja, dann müsste das hier hinhauen:
PHP-Code:
<?php

return array_walk($aSourcecreate_function('$mValue, &$sKey''$sKey = "{$sKey}"'));
...oder sowas in der Art.

Ansonsten würd ich einfach mit foreach ein neues Element bauen bzw., wenn klar ist, dass es keine numerischen Schlüssel gibt und das Array nicht gerade klein ist mit key() und array_shift() jeweils ein Element rausziehen und in ein neues Element schreiben (reset() zu anfangs nicht vergessen).

Basti
Basti ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 15.02.2007, 07:13 Nach oben    #10
Jonas
 
Benutzerbild von Artemis
 
Registriert seit: 03.06.2006
Beiträge: 244
Standard

Deine Methode scheint nicht zu funktionieren:
PHP-Code:
<?php

$aValues 
= array(
    
'title'   => 'Bennis tolles Template',
    
'content' => 'Lorem ipsum dolor ...'
);

function 
add_braces($mValue, &$sKey)
{
    
$sKey '{'.$sKey.'}';
}

echo 
'<pre>';
var_dump($aValues);
array_walk($aValuesadd_braces);
var_dump($aValues);
echo 
'</pre>';

?>
Code:
array(2) {
  ["title"]=>
  string(22) "Bennis tolles Template"
  ["content"]=>
  string(21) "Lorem ipsum dolor ..."
}
array(2) {
  ["title"]=>
  string(22) "Bennis tolles Template"
  ["content"]=>
  string(21) "Lorem ipsum dolor ..."
}
__________________
Applikations-Programmierung:
BlitzMax, BlitzPlus

Webentwicklung:
PHP, (X)HTML, CSS, JavaScript, MySQL


Artemis ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 15.02.2007, 12:39 Nach oben    #11
Bastian Fenske
 
Registriert seit: 04.01.2006
Ort: Kassel
Beiträge: 853
Standard

Okay ... hätte ja sein können.

Basti
Basti ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
PingBacks sind an
RefBacks sind aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Zend Framework - Probleme mit Zend_Controller_RewriteRouter bzw. Form der URLs Ben PEAR, PECL und Frameworks 12 24.12.2006 17:17
Suche Hilfe: Angebot und Nachfrage berechnen ljungi Plauderecke 6 17.12.2006 22:10
Schlüssel in verschachteltem Array suchen und Wert zurückgeben Ben PHP-Programmierung 8 19.10.2006 18:54
Array in Bezug auf ein anderes sortieren... code5 PHP-Programmierung 2 15.05.2006 15:56
Ein Array in ein Array schreiben bacarni PHP-Programmierung 2 07.02.2006 14:24


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:43 Uhr.


Powered by vBulletin® Version 3.7.4 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45