2016-05-01 4 views
0

Ich habe Probleme mit einer PHP-Schleife.Slicing zwei Werte aus Array und Hinzufügen zu neuen Array in for Schleife

Vielleicht gibt es einen besseren Weg, dies zu tun. Derzeit ist mein post kehrt

array(4) { 
    [1]=> string(2) "on" 
    ["1-qty"]=> string(1) "1" 
    [5]=> string(2) "on" 
    ["5-qty"]=> string(1) "9" 
} 

Ich versuche, eine neue Reihe von 2-Arrays wie die folgenden

array(2) { 
    array(2) { 
     [category]=> string(2) "1" 
     ["qty"]=> string(1) "1" 
    } 
    array(2) { 
     [category]=> string(2) "5" 
     ["qty"]=> string(1) "9" 
    } 
} 

ich versucht habe, über jeden foreach und for-Schleife zu machen, die ich verwalten können zusammen stellen . Das Hauptproblem ist der erste Wert, den ich brauche, ist der Schlüssel, nicht der Wert des ersten Arrays. Dann muss ich die ersten zwei Arrays aus dem Haupt-Array nehmen und zu einem neuen Array hinzufügen, wobei der erste Array-Schlüssel der neue Wert der ersten Schlüsselkategorie im Array ist und der Wert des zweiten Arrays der Wert des neuen ist Schlüssel Menge in dem Array, und Wiederholung von Gruppen von 2 foreach Satz, der in der post variable

Stromschleife (nicht funktioniert)

$data = $this -> input -> post(); 
$dCount = count($data); 
$newCount = $dCount/2; 
$fin = array(); 
for ($i = 0; $i <= $newCount; $i++) { 
    $vals = array_slice($data, 0, $i + 1, true); 
    $qty = array_slice($vals, 0, $i , true); 
    $key = current(array_keys($qty)); 
    $final = array('category' => $key, 'qty' => $qty[$key . '-qty']); 
    $fin[] = $final; 
} 

Antwort

3

Versuchen auf diese Weise:

$source_arr = array(1 => "on", "1-qty" => 1, 5 => "on", "5-qty" => "9"); 
$result_arr = array(); 
foreach ($source_arr as $key => $value) { 
    if ($value == "on" && isset($source_arr[$key . "-qty"])) { 
     $result_arr[] = array(
      'category' => $key, 
      'qty' => $source_arr[$key . "-qty"] 
     ); 
    } 
} 
+0

dank, I habe nicht versucht, eine foreach mit Schlüssel/Wert zu verwenden. Way Cleaner Code ... – user1881482

Verwandte Themen