2016-05-04 3 views
-3

Ich habe diese zwei Arrays:Kombinieren Sie jede Taste und den Wert der Array mit einem anderen Array

$arr1 = Array (600 => 580, 500 => 480, 100 => 80) <- always 3 

$arr2 = Array ('filt' => grey, 'or' => 90) <- this array is dynamic 

Wie kann ich jeden Schlüssel und Wert aus der ersten Reihe mit dem anderen Array kombinieren? Ich meine, ich brauche:

$array = (600 => 580, 'filt' => grey, 'or' => 90) 
$array = (580 => 480, 'filt' => grey, 'or' => 90) 

nacheinander in for/foreach Schleife. Wie kann ich das machen? Vielen Dank, im neuen auf php ^^ und sorry für mein Englisch: P

+0

Also brauchen Sie drei neue Arrays, jedes mit einem Element für das erste Array und Rest ist vom zweiten? und was sollte die Ausgabe sein? Array von Arrays oder drei neue verschiedene Variablen? sei genauer. – mitkosoft

+0

@mitkosoft vor allem, danke für die Antwort. Okey, ich muss das tun: foreach von $ arr1 (immer 3) um 3 URLs zu machen, muss jeder sein: erster Schlüssel und Wert des ersten Arrays mit dem Rest des zweiten. Um genauer zu sein, zum Beispiel: erste URL wird ->? 600 = 580 & filt = grau & or = 90. Der nächste:? 500 = 480 & filt = grau & or = 90 ... (der Konstruktor habe ich schon gemacht). Also ich nehme an, dass ich nicht ein Array von Arrays in der Foreach machen muss, oder? Danke – Jmack

+0

@Jmack, Wollte Sie nur ein Array mit '$ array1', wo der Schlüssel, Wert-Paar zum zweiten' $ array' hinzugefügt ?? –

Antwort

0

Ich glaube, Sie diese brauchen. Einfach das erste Array durchlaufen, das erste Array in das out-Array kopieren und den key, Wert des loop-Arrays in das out-Array einfügen.

Wie Sie erwähnen:

$array = (600 => 580, 'filt' => grey, 'or' => 90) 
$array = (580 => 480, 'filt' => grey, 'or' => 90) 

Ich glaube, Sie jedes Mal unterschiedliche Array erstellen müssen. Für jedes der Elemente des ersten Arrays benötigen Sie ein anderes Array als Ausgabe.

$arr1 = array("600" => 580, "500" => 480, "100" => 80); 
$arr2 = array('filt' => "grey", 'or' => 90); 

$out = array(); 
foreach($arr1 as $key => $value){ 
    $out = $arr2; 
    $out[$key] = $value; 

    print_r($out); 
} 

Ergebnis

Erste Iteration:

Array 
(
    [filt] => grey 
    [or] => 90 
    [600] => 580 
) 

Zweite Iteration:

Array 
(
    [filt] => grey 
    [or] => 90 
    [500] => 480 
) 

dritte Iteration:

Array 
(
    [filt] => grey 
    [or] => 90 
    [100] => 80 
) 
+1

Ja! Das ist was ich brauche! Danke :) und danke auch für den Versuch, mich trotz meiner schlechten englischen Aussprache zu verstehen. – Jmack

0

Try this:

$arr1 = array('600' => '580', '500' => '480', '100' => '80') ; 
$arr2 = array('filt' => 'grey', 'or' => '90'); 
$arra_new = array(); 
foreach($arr1 as $key=>$arr) { 
    $temp = $arr2; 
    $temp[$key] = $arr; 
    $arra_new[] = $temp; 
} 
print '<pre>';print_r($arra_new);exit; 
0

Die Lösung mit array_walk und array_replace Funktionen:

$arr1 = Array(600 => 580, 500 => 480, 100 => 80); 
$arr2 = Array('filt' => 'grey', 'or' => 90, 'and' => 150, 'if' => 10); 
$combined = []; 

array_walk($arr1, function($v, $k) use($arr2, &$combined) { 
    $combined[] = array_replace([$k => $v], $arr2); 
}); 

print_r($combined); 

Der Ausgang:

Array 
(
    [0] => Array 
     (
      [600] => 580 
      [filt] => grey 
      [or] => 90 
      [and] => 150 
      [if] => 10 
     ) 

    [1] => Array 
     (
      [500] => 480 
      [filt] => grey 
      [or] => 90 
      [and] => 150 
      [if] => 10 
     ) 

    [2] => Array 
     (
      [100] => 80 
      [filt] => grey 
      [or] => 90 
      [and] => 150 
      [if] => 10 
     ) 
) 
+0

Das brauche ich aber der andere User gibt mir noch eine einfachere Antwort, aber das würde mir auch dienen, danke! – Jmack

0

versuchen Sie diese Methode ..

<?php 
$arr1 = array(600 => 580, 500 => 480, 100 => 80); 
$arr2 = array('filt' => 'grey', 'or' => 90); 

$newArray =array(); 
foreach($arr1 as $key =>$val) 
{ 
    $temp =array(); 
    $temp[$key]= $val; 
    $newArray[] =$temp+$arr2; 
} 

echo "<pre>"; print_r($newArray); 
?> 

erhalten Sie folgende Ausgabe:

Array 
(
    [0] => Array 
     (
      [600] => 580 
      [filt] => grey 
      [or] => 90 
     ) 

    [1] => Array 
     (
      [500] => 480 
      [filt] => grey 
      [or] => 90 
     ) 

    [2] => Array 
     (
      [100] => 80 
      [filt] => grey 
      [or] => 90 
     ) 

) 
+0

@Fraynekonok, ich habe die OP-Ausgabe überprüft und vergessen zu überprüfen, meine Ausgangstasten '600 500 100' fehlen in ... jetzt bearbeitet die Antwort. Danke für das Zeigen. –

+0

Ja, ich sah und den ersten Kommentar entfernen. –

Verwandte Themen