2017-12-27 22 views
-1

Hallo Angenommen, ich habe dieses Array:Vergleichswerte in einem Array und ändern Sie den Wert

array (
    0 => 
    array (
    'hotel_id' => 123, 
    'hotel_name' => 'hotel 1', 
    'deal_name' => 'deal 1', 
    'start_date' => '2017-12-01', 
    'end_date' => '2017-12-10', 
    'plan' => 'B/B', 
), 
    1 => 
    array (
    'hotel_id' => 456, 
    'hotel_name' => 'hotel 2', 
    'deal_name' => 'deal 1', 
    'start_date' => '2017-12-01', 
    'end_date' => '2017-12-07', 
    'plan' => 'H/B', 
), 
    2 => 
    array (
    'hotel_id' => 123, 
    'hotel_name' => 'hotel 1', 
    'deal_name' => 'deal 1', 
    'start_date' => '2018-01-05', 
    'end_date' => '2017-02-12', 
    'plan' => 'H/B', 
), 
    3 => 
    array (
    'hotel_id' => 666, 
    'hotel_name' => 'hotel 3', 
    'deal_name' => 'deal 3', 
    'start_date' => '2017-12-01', 
    'end_date' => '2017-12-30', 
    'plan' => 'B/B', 
), 
    4 => 
    array (
    'hotel_id' => 123, 
    'hotel_name' => 'hotel 1', 
    'deal_name' => 'deal 3', 
    'start_date' => '2017-12-01', 
    'end_date' => '2017-12-30', 
    'plan' => 'B/B', 
), 
) 

ich brauche durch Array zu laufen und Forech var in Array überprüfen, ob seine hotel_id und seine deal_name gleich ist ich möchte 99 hinzufügen zum Beispiel hotel_id dieses Array sollte wie folgt aussehen:

array (
    0 => 
    array (
    'hotel_id' => 12399, 
    'hotel_name' => 'hotel 1', 
    'deal_name' => 'deal 1', 
    'start_date' => '2017-12-01', 
    'end_date' => '2017-12-10', 
    'plan' => 'B/B', 
), 
    1 => 
    array (
    'hotel_id' => 456, 
    'hotel_name' => 'hotel 2', 
    'deal_name' => 'deal 1', 
    'start_date' => '2017-12-01', 
    'end_date' => '2017-12-07', 
    'plan' => 'H/B', 
), 
    2 => 
    array (
    'hotel_id' => 12399, 
    'hotel_name' => 'hotel 1', 
    'deal_name' => 'deal 1', 
    'start_date' => '2018-01-05', 
    'end_date' => '2017-02-12', 
    'plan' => 'H/B', 
), 
    3 => 
    array (
    'hotel_id' => 666, 
    'hotel_name' => 'hotel 3', 
    'deal_name' => 'deal 3', 
    'start_date' => '2017-12-01', 
    'end_date' => '2017-12-30', 
    'plan' => 'B/B', 
), 
    4 => 
    array (
    'hotel_id' => 123, 
    'hotel_name' => 'hotel 1', 
    'deal_name' => 'deal 3', 
    'start_date' => '2017-12-01', 
    'end_date' => '2017-12-30', 
    'plan' => 'B/B', 
), 
) 

Da das Array [0] und array [2] haben die gleiche hotel_id und die gleiche deal_name aber array [4] wurden o Nur die selbe hotel_id und nicht die selbe feal_name.

Dies ist ein dynamisches Array, so dass es viele Daten enthalten kann. Natürlich könnte es ein anderes hotel_id mit den gleichen Angeboten geben.

Bitte irgendwelche Hilfe?

+0

Woher kommt 12399? – rahulsm

+0

ich muss 99 hinzufügen, um die hotel_id die zweite array ist das, was ich sein muss – tizmantiz

Antwort

0

Wenn ich Ihre Frage richtig verstanden habe, dann gibt es zwei Teilaufgaben. 1) Finde Datensätze mit identischen Paaren "hotel_id und deal_name". 2) Dann ändern Sie ihre hotel_id.

Meine Entscheidung: Für den ersten Durchgang des gesamten Arrays werden wir Informationen über die Hotel-ID und Deal-Name sammeln. Um es zu speichern, verwende ich ein mehrdimensionales Array.

Dieses Array Dann werden die Daten

{ 
    "123": { // hotel_id 
    "deal 1": [ // hotel_name 
     0, // keys with this hotel_id and hotel_name 
     2 
    ], 
    "deal 3": [ 
     4 
    ] 
    }, 
    "456": { 
    "deal 1": [ 
     1 
    ] 
    }, 
    "666": { 
    "deal 3": [ 
     3 
    ] 
    } 
} 

enthalten wird, gehen wir über das mehrdimensionale Array und die hotel_id ändern.

<?php 
$array = array (
    0 => 
     array (
      'hotel_id' => 123, 
      'hotel_name' => 'hotel 1', 
      'deal_name' => 'deal 1', 
      'start_date' => '2017-12-01', 
      'end_date' => '2017-12-10', 
      'plan'  => 'B/B', 
     ), 
    1 => 
     array (
      'hotel_id' => 456, 
      'hotel_name' => 'hotel 2', 
      'deal_name' => 'deal 1', 
      'start_date' => '2017-12-01', 
      'end_date' => '2017-12-07', 
      'plan'  => 'H/B', 
     ), 
    2 => 
     array (
      'hotel_id' => 123, 
      'hotel_name' => 'hotel 1', 
      'deal_name' => 'deal 1', 
      'start_date' => '2018-01-05', 
      'end_date' => '2017-02-12', 
      'plan'  => 'H/B', 
     ), 
    3 => 
     array (
      'hotel_id' => 666, 
      'hotel_name' => 'hotel 3', 
      'deal_name' => 'deal 3', 
      'start_date' => '2017-12-01', 
      'end_date' => '2017-12-30', 
      'plan'  => 'B/B', 
     ), 
    4 => 
     array (
      'hotel_id' => 123, 
      'hotel_name' => 'hotel 1', 
      'deal_name' => 'deal 3', 
      'start_date' => '2017-12-01', 
      'end_date' => '2017-12-30', 
      'plan'  => 'B/B', 
     ), 
); 

$hotelDeals = array(); 

foreach ($array as $recordKey => $dealData) { 
    $hotelId = $dealData['hotel_id']; 
    if (!isset($hotelDeals[$hotelId])) { 
     $hotelDeals[$hotelId] = array(); 
    } 
    $dealName = $dealData['deal_name']; 
    if (!isset($hotelDeals[$hotelId][$dealName])) { 
     $hotelDeals[$hotelId][$dealName] = array ($recordKey); 
    } else { 
     $hotelDeals[$hotelId][$dealName][] = $recordKey; 
    } 
} 

foreach ($hotelDeals as $hotelId => $deals) { 
    foreach ($deals as $dealName => $recordKeys) { 
     if (count($recordKeys) === 1) { 
      continue; 
     } 
     foreach ($recordKeys as $recordKey) { 
      $array[$recordKey]['hotel_id'] = $array[$recordKey]['hotel_id'] . '99'; 
     } 
    } 
} 
+0

Hallo es ist genau das, was ich brauche, ich danke Ihnen sehr, sehr. – tizmantiz

Verwandte Themen