2013-07-29 4 views
0

foreach 루프가 있습니다 (장바구니에있는 제품의 세부 정보가 반환 됨). 무엇을 반환 것은 (나는 조금을 줄일 것)이 있습니다 :PHP 배열 조작 도움말 필요

array(2) { 
    [0]=> 
    array(4) { 
    ["retailer"]=> 
    string(1) "2" 
    ["productid"]=> 
    int(400) 
    ["quantity"]=> 
    string(1) "1" 
    ["discount"]=> 
    int(0) 
    } 
    [1]=> 
    array(4) { 
    ["retailer"]=> 
    string(1) "2" 
    ["productid"]=> 
    int(470) 
    ["quantity"]=> 
    int(1) 
    ["discount"]=> 
    int(0) 
    } 
} 

내가 원하는 것은 소매 업체의 ID와 내용은 제품 정보로 될 수있는 배열 키입니다. 이 배열을 어떻게 다듬을 수 있습니까?

+0

설명 : 원래의 foreach 루프를 다른 용도로 사용하는 것처럼 편집 할 수 없으므로 그 데이터를 다른 것들에 유용한 배열로 어떻게 분류합니까? – ScottMcGready

답변

1

게시 한 배열이 $data이라고 가정하면 키가 소매업자인 연관 배열이 제공됩니다.

소매 업체는 고유하지 않으므로 하나 이상의 "제품"의 배열이됩니다.

$result = array(); 
foreach ($data as $row) { 

    $id = $row['retailer']; 
    if (! isset($result[$id])) $result[$id] = array(); 

    $result[$id][] = array(
    'productid' => $row['productid'], 
    'quantity' => $row['quantity'], 
    'discount' => $row['discount'], 
); 
} 
+0

불행하게도 고객은 동일한 소매 업체의 바구니에 둘 이상의 제품을 보유 할 수 있으므로 배열의 데이터를 덮어 씁니다. – ScottMcGready

+0

@ScottMcGready가 이미 질문을 업데이트했습니다. – AlexP

+0

맨 이래서 나는 Stack을 좋아합니다. – ScottMcGready