[php] array plat slaan naar string

Pagina: 1
Acties:
  • 135 views sinds 30-01-2008
  • Reageer

  • red_indian
  • Registratie: Maart 2000
  • Laatst online: 24-06 16:43

red_indian

 Smokin' Suckz B!

Topicstarter
ik heb een multi-dimensioneel array die ik wil omzetten naar een string.

een join("", $array) dus, maar dit werkt alleen bij een normaal array.

iemand die dit al heeft gedaan? of is hier een standaard functie voor? (kon hem niet vinden op php.net)

ik knutsel ondertussen ff door, als ik iets heb post ik het hier wel.

Need a cuesheet/tracklisting? (meer dan 500.000 online)


Verwijderd

Volgens mij is het logisch dat daar géén functie voor is, want - bij een 2-dimensionale array - welke waarden moet je nu eerst invullen, x of y richting?

Ik denk dus dat je het met een loopje moet doen, dus eerst in 1 richting joinen met een loop, zodat je in de andere richting in 1 keer een join kan uitvoeren.

  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 21:00
Hoe moet je output worden :?

  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 21:00
PHP:
1
2
3
4
5
6
7
<?
for($i=0,$j=0;$j < count($array);$i=$i+0.25,$j++)
{
  $i = floor($i);
  // handig als je bijv. 4 subarrays in elke array-waarde hebt
}
?>

Stukje dat ik ff ooit in 1 minuut voor Pelle in elkaar had geflunseld als voorbeeldje, misschien heb je er wat aan. Het laat iig duidelijk zien hoe je met multidimensionale arrays moet omgaan.

  • red_indian
  • Registratie: Maart 2000
  • Laatst online: 24-06 16:43

red_indian

 Smokin' Suckz B!

Topicstarter
ik heb nu dit:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
<?
function array_string($array, $delimit = ""){
  $r = "";
  foreach($array as $a){
    if(is_array($a)){
      $r.= array_string($a).$delimit;
    }else{
      $r.= $a.$delimit;
    }
  }
  return $r;
}
?>

op zich zou ik nog een delimiter in kunnen stellen. maar dat is voor mij niet noodzakelijk. toch ff toegevoegd ;)

ik ben html eerst naar xml aan het converten. en dan wil ik die xml boom platslaan. tis een beetje omslachtig, ik weet het, maar ben nog ff aan het spelen met een uiteindelijke vorm.

of weet iemand een andere manier om een xml boom plat te slaan? waarbij de node-namen dan ook meegenomen worden.

dus bijvoorbeeld (xml):
<body>
<a href="henk.com">henk</a>
</body>

deze moet dan worden (html):
<body><a href="henk.com">henk</a></body>

zinloos denk je nu vast. maar ik wil dus stukken html kunnen benaderen als arrays in xml, en vervolgens die stukken platslaan om ze als html te gebruiken.

ik voel een xsl aankomen? :?

Need a cuesheet/tracklisting? (meer dan 500.000 online)


  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 21:00
ik denk eerder xslt *D
tjeemig, klinkt iig knap ingewikkeld

  • Orphix
  • Registratie: Februari 2000
  • Niet online
Als je host XSL ondersteund dan zou ik idd beter een transformatie doen.
[edit] Al begrijp ik niet helemaal wat je nou bedoelt? Het enige verschil wat ik zie is dat bij het HTML bestand geen newlines staan

  • red_indian
  • Registratie: Maart 2000
  • Laatst online: 24-06 16:43

red_indian

 Smokin' Suckz B!

Topicstarter
het is ook een slecht voorbeeld :P

het gaat eigenlijk om een html poster/replier. je kunt met een iframe in design mode je hele post editen alsof je een tekstverwerker voor je hebt (werkt helaas alleen in IE).
die html post zet ik dan om in xml. zo'n xml wil ik dan weer plat slaan, maar alleen het stuk tussen <reply/>. dit is html waar ik verder weinig aan hoef te doen. het gaat ook meer om een test. ik denk dat het slimmer is om gewoon de html in een tekstbestand te gooien in een dir. gebruik xml eigenlijk nog helemaal niet. maar het leek me cool, want dan kan ik straks de inhoud aan de hand van een xsl (moet ik nog leren) manipuleren en met een paar xsl's een compleet andere look / feel creeren. vandaar. ;)

ik heb mijn functie nog iets ingekort en m_join genoemd, multi-dimensionale join als aanvulling voor een gewone join.
PHP:
1
2
3
4
5
6
7
<?
function m_join($r, $array){
  if(!is_array($array)) $r = $array;
  foreach($array as $a) if(is_array($a)) $r = m_join($r, $a); else $r.= $a;
  return $r;
}
?>

voorbeeld aanroep: m_join("", $array);

* red_indian gaat eens xsl bekijken. :+

edit:
als het geen array is toegevoegd

Need a cuesheet/tracklisting? (meer dan 500.000 online)

Pagina: 1