2016-04-22 5 views
-2

Ich habe ein Array:Arbeiten mit Arrays - Klon

$obj = Array 
(
    [0] => stdClass Object 
     (
      [id] => 1 
      [qty] => 2 
     ) 

    [1] => stdClass Object 
     (
      [id] => 2 
      [qty] => 1 
     ) 
); 

Wie ich auf der Menge basiert, kann das Array diese umwandeln kann:

$obj2 = Array 
(
    [0] => stdClass Object 
     (
      [id] => 1 
      [qty] => 1 
     ) 

    [1] => stdClass Object 
     (
      [id] => 1 
      [qty] => 1 
     ) 
    [2] => stdClass Object 
     (
      [id] => 2 
      [qty] => 1 
     ) 
); 

Dank!

+0

Nun normalerweise Leute, was es in die andere Richtung zu tun. Aber wo ist das Problem dabei? – Rizier123

+2

Sie haben es gerade getan. – Marcus

+0

Verwenden Sie eine for-Schleife basierend auf der Menge, – Dale

Antwort

4

sollte diese Arbeit:

<?php 
$obj = array(
    0 => (object) array(
     'id' => 1, 
     'qty' => 2 
    ), 
    1 => (object) array(
     'id' => 2, 
     'qty' => 1 
    ) 
); 

$obj2 = array(); 

foreach($obj as $v) 
{ 
    if($v->qty > 1) 
    { 
     while($v->qty > 0) 
     { 
      $obj2[] = (object) array('id'=>$v->id, 'qty'=>1); 
      --$v->qty; 
     } 
    } 
    else 
    { 
     $obj2[] = $v; 
    } 
} 

print_r($obj2); 
+1

Ich mag diese Antwort besser als meine eigenen :) –

1

Iterieren Sie durch jede Zeile Ihres ursprünglichen Arrays, und drücken Sie dann für jede Anzahl der Menge einen Eintrag auf ein neues Array mit der ID der aktuellen Zeile.

// SETTING UP INITIAL DATA FOR EXAMPLE 
$object1 = new StdClass(); 
$object2 = new StdClass(); 

$object1->id = 1; 
$object1->qty = 2; 

$object2->id = 2; 
$object2->qty = 1; 

$array = array(
    $object1, 
    $object2 
); 
// END SETTING UP INITIAL DATA 

$array2 = array(); 

foreach($array as $row) 
{ 
    for($i = 0; $i < $row->qty; $i++) 
    { 
     $stdClass = new StdClass(); 
     $stdClass->id = $row->id; 
     $stdClass->qty = 1; 
     $array2[] = $stdClass; 
    } 
} 

Live Example