PHP - String aufbrechen und speichern
Hallo,
ich habe viele Strings, die nach folgendem Muster aufgebaut sind:
$str = "topCat/subcat/subsubCat/.../endpoint";
Die "Tiefe" dieser Schachtelung ist dabei variabel.
nun soll anhand einer zählvariablen jedes item eine id bekommen und ich hätte gern eine Liste nach dem Motto:
item item_id parent_id
Zur Veranschaulichung nehmen wir an, dass es sich bei den Strings um alle "Endkategorien" eines Shops handelt.
Also zum Beispiel
"elekto/größgeräte/waschmaschinen"
"elekto/größgeräte/trockner/abluft"
ich habe eine Lösung, die mir zunächst einen entsprechend geschachtelten Array bringt, auf dessen Basis sich so eine Tabelle erstellen lässt.
Allerdings ist die mögliche Tiefe in diesem Fall hardcoded.
Das ist unschön und ich suche eine Lösung, welche sowas quasi in eine beliebige Tiefe (int_max) erlaubt.
Vllt. hat ja jemand eine Idee.
Danke schon mal für eure Antworten.
ich habe viele Strings, die nach folgendem Muster aufgebaut sind:
$str = "topCat/subcat/subsubCat/.../endpoint";
Die "Tiefe" dieser Schachtelung ist dabei variabel.
nun soll anhand einer zählvariablen jedes item eine id bekommen und ich hätte gern eine Liste nach dem Motto:
item item_id parent_id
Zur Veranschaulichung nehmen wir an, dass es sich bei den Strings um alle "Endkategorien" eines Shops handelt.
Also zum Beispiel
"elekto/größgeräte/waschmaschinen"
"elekto/größgeräte/trockner/abluft"
ich habe eine Lösung, die mir zunächst einen entsprechend geschachtelten Array bringt, auf dessen Basis sich so eine Tabelle erstellen lässt.
Allerdings ist die mögliche Tiefe in diesem Fall hardcoded.
Das ist unschön und ich suche eine Lösung, welche sowas quasi in eine beliebige Tiefe (int_max) erlaubt.
Vllt. hat ja jemand eine Idee.
Danke schon mal für eure Antworten.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 371914
Url: https://administrator.de/contentid/371914
Ausgedruckt am: 22.11.2024 um 05:11 Uhr
3 Kommentare
Neuester Kommentar
Hi,
ich sehe da kein Problem:
Gruß
ich sehe da kein Problem:
<?php
$strings = array(
"elekto/größgeräte/waschmaschinen",
"elekto/größgeräte/trockner/abluft",
);
foreach($strings as $string){
$result = preg_split('/\//',$string);
if($result !== false){
$itm = $result[count($result)-1];
$parent = $result[count($result)-2];
echo "Parent of item '$itm' is '$parent'.<br>";
}
}
?>
Was ich aber bräuchte:
Wenn man's weiß kein Problem, leider war deine Schilderung diesbezüglich etwas schwammig .In dem Fall ist das super einfach, denn du durchläufst einfach das preg_split array mit einer for-Schleife und nimmst für den Parent einfach den aktuellen Array-Index -1, fertig .
<?php
$strings = array(
"elekto/größgeräte/waschmaschinen",
"elekto/größgeräte/trockner/abluft",
);
$tblParents = array();
foreach($strings as $string){
$result = preg_split('/\//',$string);
if($result !== false){
for ($i = 0; $i < count($result);$i++){
$cat = $result[$i];
$parent = ($result[$i-1] != "") ? $result[$i-1] : 0;
if (!array_key_exists($cat,$tblParents)){
$tblParents[$cat] = $parent;
}
}
}
}
echo '<pre>' . print_r($tblParents, true) . '</pre>';
?>