2015-04-22, 12:27
  #1
Medlem
Hur gör jag om min array så att den vid print_r visar

Kod:
Array
(
    [p0] => "text"
)

istället för


Kod:
Array
(
    [p0] => text
)

som den är i nuläget?
Citera
2015-04-22, 12:39
  #2
Medlem
'"text"'

?
Citera
2015-04-22, 12:41
  #3
Medlem
Det där har väl mer med print_r att göra än hur du gjort din array? Eller menar du hur du får in citationstecken i strängen?

Kod:
print_r(array('p0' => '"text"'));
// och
print_r(array('p0' => "\"text\"")); 
Citera
2015-04-22, 12:42
  #4
Medlem
Citat:
Ursprungligen postat av tepete
'"text"'

?


Jag har en existerande array som ser ut som på kodruta 2. Det jag vill göra är att ändra arrayen genom att köra den i en funktion så den vid print_r skrivs ut som på kodruta 1.
Citera
2015-04-22, 12:48
  #5
Medlem
array_map()
Eller foreach för den delen, beroende på hur din array ser ut.
__________________
Senast redigerad av Koenigsegg 2015-04-22 kl. 12:50. Anledning: La till info
Citera
2015-04-22, 12:50
  #6
Medlem
Citat:
Ursprungligen postat av AVGASBARN
Det där har väl mer med print_r att göra än hur du gjort din array? Eller menar du hur du får in citationstecken i strängen?

Kod:
print_r(array('p0' => '"text"'));
// och
print_r(array('p0' => "\"text\"")); 

Ja alltså mitt problem ser ut på följande vis:

1. Jag hämtar data från MySQL
2. Jag loopar igenom resultatet och sparar det i en array som jag kallar för $hash

Kod:
$r = 0;

while ($row = mysql_fetch_array($result, MYSQL_NUM)) {
    $hash["p" .$r] = $row[0];
    $hash["c{$r}"] = $row[2];
    $r++;
}
.

Problemet är att när jag ska rendera ut det via en templatefil med Mustache, ignorerar den alla arrayfält som innehåller å, ä och ö och jag tror det beror på att värdena i arrayen måste vara omslutande av dubbelfnuttar ("). Jag tror klassen Mustache bara tar arrayer på JSON-format.
Citera
2015-04-22, 12:58
  #7
Medlem
Citat:
Ursprungligen postat av fyma
Ja alltså mitt problem ser ut på följande vis:

1. Jag hämtar data från MySQL
2. Jag loopar igenom resultatet och sparar det i en array som jag kallar för $hash

Kod:
$r = 0;

while ($row = mysql_fetch_array($result, MYSQL_NUM)) {
    $hash["p" .$r] = $row[0];
    $hash["c{$r}"] = $row[2];
    $r++;
}
.
Borde ju bara vara
Kod:
$r = 0;

while ($row = mysql_fetch_array($result, MYSQL_NUM)) {
    $hash["p" .$r] = '"' . $row[0] . '"';
    $hash["c{$r}"] = $row[2];
    $r++;
}
Citat:
Ursprungligen postat av fyma
Problemet är att när jag ska rendera ut det via en templatefil med Mustache, ignorerar den alla arrayfält som innehåller å, ä och ö och jag tror det beror på att värdena i arrayen måste vara omslutande av dubbelfnuttar ("). Jag tror klassen Mustache bara tar arrayer på JSON-format.
Tror dock inte lösningen ovan kommer lösa ditt problem, det måste vara något annat som ställer till det.

Du pratar om JSON, hur ser din JSON-output ut? När du konverterar en associativ php-array med strängvärden till JSON kommer fnuttarna läggas på för att markera strängen, precis som när du skriver fnuttar runt strängar i php.
Citera
2015-05-08, 08:58
  #8
Medlem
xid0ns avatar
Du säger att Mustache bara klarar av arrayer i json-format men du visar upp en print_r

Testa att köra med json_encode().
Kod:
<?php

$array 
= array('p0' => 'åäöaa');

echo 
json_encode($array);

Vilket ger en output på
Kod:
{"p0":"\u00e5\u00e4\u00f6aa"
Citera

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Det är enkelt att registrera ett nytt konto

Bli medlem

Logga in

Har du redan ett konto? Logga in här

Logga in