2016-07-26 1 views
1

Ich habe 2 Arrays, ein Array hat Standardwerte, die verwendet werden sollten, wenn Werte aus Haupt-Array leer oder überhaupt nicht gesetzt sind.
und ich habe gesetzt Cookie namens 'lang' mit Werten 'ru' oder 'lv' oder 'en'. Wenn also der Cookie auf 'en' gesetzt ist, sollte der php nur Daten verwenden, die am Ende der Variable 'en' haben.Verwenden Sie einige Daten aus Array, wenn der Wert leer ist, verwenden Sie es aus einem anderen Array

Dieser Satz i vor allem:

$pTitleru = "111"; 
$pTitlelv = ""; 
$pTitleen = ""; 
$ogTitleru = '2222'; 
$ogTitlelv = ''; 
$ogTitleen = ''; 
$ogType = '333'; 
$ogDescrru = '4444'; 
$ogDescrlv = ''; 
$ogDescren = ''; 
$ogImgru = '555'; 
$ogImglv = ''; 
$ogImgen = ''; 

Hier bekomme ich das Cookie Wert 'lang', die 'en' ist:

$cookielang = $_COOKIE[$lang]; // $cookielang = 'en' 

Hier Array mit Standardwerten, die sollte wird nur verwendet, wenn die ursprünglichen Werte nicht gesetzt oder leer sind:

Und hier ist das Hauptarray:

$ogMetas = array(
    '$pTitleru' => $ptitleru, 
    '$pTitlelv' => $ptitlelv, 
    '$pTitleen' => $ptitleen, 
    '$ogTitleru' => $ogTitleru, 
    '$ogTitlelv' => $ogTitlelv, 
    '$ogTitleen' => $ogTitleen, 
    '$ogType' => $ogType, 
    '$ogDescrru' => $ogDescrru, 
    '$ogDescrlv' => $ogDescrlv, 
    '$ogDescren' => $ogDescren, 
    '$ogImgru' => $ogImgru, 
    '$ogImglv' => $ogImglv, 
    '$ogImgen' => $ogImgen,); 

Ich habe es geschafft, Werte zu erhalten, die leer sind, aber nicht sicher, was als nächstes :(

foreach ($ogMetas as $ogMeta => $ogMetaVal) { 
    if (empty($ogMetaVal)) { 
     echo "this '".$ogMeta."' is empty <br>"; 
    } 
} 

ich es Sinn, Hoffnung zu tun, macht und ich werde es tun schätze wirklich jede Hilfe!

+0

Nicht verwandt, aber es sollte kein Komma am Ende jedes Arrays geben –

+0

Was meinst du mit Verwendung? Was genau soll mit den Elementen passieren, wo noch Wert existiert? –

+0

@JulianKuchlbauer Ich bin mir nicht sicher, aber am Ende wäre ich in der Lage, das Endergebnis einfach in html zu schreiben:

Antwort

1

Wenn ich Ihre Frage richtig verstanden habe, fragen Sie nur, wie Sie die leeren Werte des Hauptarrays mit den entsprechenden Werten des Standardarrays füllen.


Sie können die ?: (ternary) assignment operator als einfacher Alternative verwenden Sie die Standardwerte direkt auf Zuweisung der Variablen zugewiesen werden, statt eine Schleife zu schaffen, es zu tun. Hier

ist die modifizierte $ogMetas Initialisierung:

$ogMetas = array(
    '$pTitleru' => $ptitleru ?: $ogDefMetas['$ptitleru'], 
    '$pTitlelv' => $ptitlelv ?: $ogDefMetas['$ptitlelv'], 
    '$pTitleen' => $ptitleen ?: $ogDefMetas['$ptitleen'], 
    '$ogTitleru' => $ogTitleru ?: $ogDefMetas['$ogTitleru'], 
    '$ogTitlelv' => $ogTitlelv ?: $ogDefMetas['$ogTitlelv'], 
    '$ogTitleen' => $ogTitleen ?: $ogDefMetas['$ogTitleen'], 
    '$ogType' => $ogType ?: $ogDefMetas['$ogType'], 
    '$ogDescrru' => $ogDescrru ?: $ogDefMetas['$ogDescrru'], 
    '$ogDescrlv' => $ogDescrlv ?: $ogDefMetas['$ogDescrlv'], 
    '$ogDescren' => $ogDescren ?: $ogDefMetas['$ogDescren'], 
    '$ogImgru' => $ogImgru ?: $ogDefMetas['$ogImgru'], 
    '$ogImglv' => $ogImglv ?: $ogDefMetas['$ogImglv'], 
    '$ogImgen' => $ogImgen ?: $ogDefMetas['$orImgen'] 
); 

Da jedoch die oben ein wenig sperrig aussieht, wenn Sie mit der Schleife zu durchlaufen wollte, Sie müssen nur die Werte gesetzt:

foreach ($ogMetas as $ogMeta => $ogMetaVal) { 
    if (empty($ogMetaVal)) { 

     // this line changed 
     $ogMetas[$ogMeta] = $ogDefMetas[$ogMeta]; 

    } 
} 

Um den zweiten Teil Ihrer Frage zu beantworten, ich bin nicht wirklich sicher, wh Sie meinen mit "use", aber die folgende iteriert nur über übereinstimmende Array-Elemente, indem Sie eine substr() angleichen. Wenn Sie Ihre Methode zum Ausfüllen der Standardwerte beibehalten möchten, können Sie sie mit dieser Schleife zusammenführen (die Schleifen sind identisch; verschachteln Sie einfach die if-Anweisungen).

+0

@MaximSlotov Wenn meine Antwort Ihnen geholfen hat, stellen Sie sicher, dass Sie sie akzeptieren (klicken Sie auf das grüne Häkchen) ext zu meiner Antwort) um der Community zu zeigen, dass sie funktioniert! Vielen Dank! –

+0

Ja! Vielen Dank! Alles funktioniert, außer diesem, hier ist die Arbeitszeile: (substr ($ ogMeta, strlen ($ ogMeta) -2) == $ cookelang) –

+0

@MaximSlotov Hoppla, das habe ich verpasst. Ich bin froh, dass es geklappt hat. –

Verwandte Themen