2017-02-26 4 views
-1

Ich schrieb dies:php fill Zeichenfolge mit Sonderzeichen

$date = $_SESSION['basket']['date']; 
$number = $_SESSION['basket']['number']; 
$type = $_SESSION['basket']['type']; 

if ($number > 9) { 
    $fill = "********"; 
} else { 
    $fill = "*********"; 
} 

echo "<pre>Date   | Number | Type |</pre>"; 

foreach ($date as $key => $value) { 
    echo "<pre>" . $date[$key] . " | " . $number[$key] . $fill . "| " . $type[$key] . "</pre>"; 
} 

$ Zahl ist immer ein Wert zwischen 1 und 14 (Anzahl der Tage), dh ein oder zwei Zeichen. Das Ziel ist eine gute Ausrichtung in meiner Ausgabe. Hier ist das Ergebnis meiner Ausgabe:

Date   | Number | Type 
28.02.2017 | 2********| Top 
26.02.2017 | 11********| Basic 

Dies funktioniert nicht, der Wert von $ fill ist immer das gleiche, die sonst Option meines wenn scheint nicht erkannt zu werden. Irgendeine Idee, wie man das löst? Vielen Dank.

Antwort

0

if - else Anweisung wurde falsch konstruiert.
Verwenden Sie die folgenden Schritte aus:

if ($number > 9) { 
    $fill = "********"; 
} else { 
    $fill = "*********"; 
} 

Oder noch kürzer mit str_pad Funktion:

... 
$number = str_pad($number, 9, '*', STR_PAD_RIGHT); 
... 
0

Es scheint mir, dass Ihre Endung Klammer Ihrer else-Anweisung in der falschen Position befindet. Sollte nicht Ihr, wenn auch Block in etwa so aussehen ?:

if ($number > 9)  { 
    $fill = "********"; 
} else { 
    $fill = "*********"; 
} 
2

Der richtige Weg wäre mit str_pad function

$targetLenght = 12; 
$string ='Text'; 

$string = str_pad($string , $targetLenght, '*'); 
echo $string; 

Ergebnisse in: Text ********

+0

die richtige str_pad Verwendung für dieses Problem Kontext :) – hassan

0

Sie können str_pad Funktion verwenden:

$ Nummer = str_pad ($ Nummer, 9, '*', STR_PAD_RIGHT);

Wie es ir Ihre Situation:

function padNumber($number) 
{ 
    return str_pad($number, 9, '*', STR_PAD_RIGHT); 
} 

foreach ($date as $key => $value) 
{ 
    echo sprintf("<pre>%s|%s|%s</pre>", $date[$key], padNumber($number[$key]), $type[$key]); 
} 
0
if ($number > 9) 

Es semes mir, dass $ Zahl ist ein Array nicht ?? so müssen Sie etwas wie folgt schreiben:

if($number[$index] > 9) 

Dies ist ein ameliered Code überprüfen Sie es.

+0

Vielen Dank Kark92, Ihre Lösung ist in Ordnung für mich. Es funktioniert. –

Verwandte Themen