2016-03-23 14 views
2
$firstarray = array("first"=>'pakistan',"second"=>'bangladesh',"third"=>''); 

Ich habe Array wie oben einige Tasten haben Wert und einige Tasten haben keinen Wert. also möchte ich dieses Array durchsuchen und no für die Schlüssel, die keinen Wert haben.Setzen Sie Werte in Multidimensional Array Tasten

Das Ergebnis, das ich will:

$newfirstarray = array("first"=>'pakistan',"second"=>'bangladesh',"third"=>'No'); 

ich auf der Web-Suche-Funktionen finden wie array_filter(), array_map(). Ich weiß nicht, entweder es funktioniert mit diesem

My Little

$firstarray = array("first"=>'pakistan',"second"=>'bangladesh',"third"=>''); 


foreach($firstarray as $keyx){ 
    if($keyx==''){ 
     $keyx='no'; //sorry for this example, at this point i don't know how to put values. 
     print_r($firstarray); 
    } 
} 

Dieser Code zeigt mir Original-Array Versuchen und nicht für den dritten Schlüssel nicht als Wert setzen.

+0

Die unten angegebene 'foreach()' wurde hinzugefügt. – AbraCadaver

Antwort

2

Schleife durch das Array und prüfen, ob der Wert auf "" gleich ist, wenn ja er ersetzen mit no:

$result = array_map(function($v){$v == "" ? "no" : $v;}, $array); 
+0

Huh, wusste nicht str_replace() nimmt Arrays. Das ist eine viel bessere Antwort als meine. :) –

+0

@JoelHinz Suche, Ersetzung und der Betreff-Parameter kann ein Array als Argument nehmen. Viele Leute wissen das nicht über str_replace(), obwohl es im Handbuch dokumentiert ist. – Rizier123

+0

Ja, ich wusste von den ersten beiden Parametern, aber ich habe die Dokumentation für diese Funktion nicht sehr lange gelesen. :) –

4

Es ist wahrscheinlich am einfachsten, nur eine foreach-Schleife durch Verweis laufen, wie folgt aus:

foreach ($array as $key => &$val) { 
    if ($key == '') { 
     $val = 'No'; 
    } 
} 

Die & bedeutet, dass Sie den Wert durch Verweis zuweisen, so kann es von rechts innerhalb der Schleife zugeordnet werden.

Edit: statt Da Sie ein neues Array möchten, können Sie einfach tun:

$new = array(); 
foreach ($array as $key => $val) { 
    if ($val == '') { 
     $val = 'No'; 
    } 
    $new[$key] = $val; 
} 

Auf diese Weise, die Sie gerade durch das erste Array gehen und ein neues on-the-fly erstellen.

+0

dann, wie ich neue Array machen kann, die keinen Wert für Schlüssel haben. und dann print_r es? –

+0

Bitte sehen Sie meine Bearbeitung. –

+0

Kein dritter Wert für den dritten Schlüssel. –

1

ich die str_replace() lieben, aber da Sie array_map() erwähnt:

$newfirstarray = array_map(function($v){ return empty($v) ? 'No' : $v; }, $firstarray); 

die ordnungsgemäße foreach() wäre:

foreach ($firstarray as $key => $val) { 
    $newfirstarray[$key] = empty($val) ? 'No' : $val; 
} 
+0

Und ich dachte immer, du wärst in 'array_column()';) – Rizier123

+1

@ Rizier123: Ich liebe array_column() mehr! :-) – AbraCadaver

Verwandte Themen