경기

2012-10-05 5 views
0

나는 "결과물"다른 "non_deliverable" 제 3 배열경기

Array 
(
    [d8df18561040f3d9bd9868f5c5aaa7c2] => Array 
     (
      [rowid] => d8df18561040f3d9bd9868f5c5aaa7c2 
      [id] => MYU_SC1 
      [qty] => 1 
      [price] => 500 
      [name] => WAEC Scratch Card 
      [service_image] => assets/img/waec.jpg 
      [service_category] => scratch_cards 
      [subtotal] => 500 
     ) 

을 별칭으로이

Array 
(
    [0] => MYU_MP1 
    [1] => 4cc00e5f580f00c2e54193fde7129608 
    [2] => da8bbfdb40be0dc2b3312ca1037f994a 
    [3] => d4cfaa8db24c4b81db506189360b6b99 
) 
Array 
(
    [0] => MYU_SC1 
    [1] => MYU_SC2 
    [2] => MYU_SF1 
    [3] => MYU_SC3 
    [4] => MYU_AD1 
    [5] => MYU_AD2 
    [6] => MYU_AD3 
    [7] => MYU_AD4 
    [8] => MYU_RC1 
    [9] => MYU_RC2 
    [10] => MYU_RC3 
    [11] => MYU_RC4 
    [12] => MYU_RC5 
    [13] => MYU_RC6 
    [14] => MYU_RC7 
    [15] => MYU_RC8 
) 

처음과 같은 두 개의 배열을 가지고 셋째 배열 "cart_items"

[f68964856a61092d9a2566d024a0ba28] => Array 
     (
      [rowid] => f68964856a61092d9a2566d024a0ba28 
      [id] => MYU_MP1 
      [qty] => 1 
      [price] => 210000 
      [name] => Apple iPhone 5 16gb 
      [service_image] => 
      [service_category] => mobile-phones 
      [subtotal] => 210000 
     ) 

)

를 앨리어싱되고 617,451,515,

I 세 번째 어레이의 "ID"요소는 첫 번째 또는 두 번째 어레이

//sort through cart items 
    foreach ($cart_items as $key => $item) { 
     if(in_array($item['id'], $deliverables) && in_array($item['id'], $non_deliverables)) { 
      $deliverable = TRUE; 
      $non_deliverable = TRUE; 
     } 

     if(in_array($item['id'], $deliverables) && !in_array($item['id'], $non_deliverables)) { 
      $deliverable = TRUE; 
     } 

     if(in_array($item['id'], $non_deliverables) && !in_array($item['id'], $deliverables)) { 
      $non_deliverable = TRUE; 
     } 

     if($deliverable && $non_deliverable) 
      $type = "both"; 
     if($non_deliverable) 
      $type = "non-deliverable"; 
     if($deliverable) 
      $type = "deliverable"; 
    } 
    return $type; 

의 구성원 그러나 만약 결정하는 세 번째 배열을 통해 루프로되어 함수를 작성한 제 배열 매치가있을 때 첫 번째와 두 번째 배열에서 함수는 "deliverable"을 반환합니다. 나는 옳지 않다.

+0

첫 번째 부분을 내 대답의 예와 함께 사용하십시오. –

답변

1

정렬 순서가 잘못되었습니다. $ deliverable 및 $ non_deliverable에 대한 검사가 마지막이어야합니다. 또는 if-else-if-else 구조를 사용할 수도 있습니다.

+0

트릭을 해 주셔서 감사합니다. – MrFoh

2
function somefunction() 
     foreach ($cart_items as $key => $item) { 
      $deliverable = in_array($item['id'], $deliverables); 
      $non_deliverable = in_array($item['id'], $non_deliverables); 

      $type = "none"; 
      if ($deliverable && $non_deliverable) { 
       $type = "both"; 
      } elseif ($deliverable && !$non_deliverable) { 
       $type = "deliverable"; 
      } elseif (!$deliverable && $non_deliverable) { 
       $type = "non-deliverable"; 
      } 
     } 
     return $type; 
}