2012-06-01 5 views
0

좋아, 나는 PHP가 매우 새롭다. 내 질문을 설명하기 위해 최선을 다할 것입니다.오브젝트 내에서 오브젝트의 정보를 얻으려는 것 PHP

이것은 json 개체의 var_dump입니다.
내가하려는 것은 'register_sale_products'개체의 정보에 액세스하는 것입니다.
SKU와 같은 제품 정보, 각 판매의 제품 가격 등이 포함되어 있습니다. 아래 예에서는 SKU를 나열하려고합니다.

object(stdClass)[1] 
    public 'register_sales' => 
    array 
     0 => 
     object(stdClass)[2] 
      public 'id' => string '7c969b77-6825-bc65-3e04-64f922a570eb' (length=36) 
      public 'register_id' => string '07709f8e-8d90-11e0-8e09-4040f540b50a' (length=36) 
      public 'invoice_number' => string 'BH8464' (length=6) 
      public 'register_sale_products' => 
      array 
       ... 
      public 'totals' => 
      object(stdClass)[6] 
       ... 
      public 'register_sale_payments' => 
      array 
       ... 
     1 => 
     object(stdClass)[9]....... 

은 내가 처음 "제품"개체 배열 'register_sale_products'이 코드를 사용하는 하나의 SKU를 얻을 수 있었다.

정말 배열의 각 객체에 대한 결과가 필요합니다.
도움을 주시면 감사하겠습니다.

+0

json 형식으로보기가 어렵다. 대신 json_decode와 PHP 배열을 덤프 할 수 있습니까? – allen213

+0

-1 http://www.emilvikstrom.se/whyidownvote.html (궁금한 점은 무엇입니까? 목표는 무엇입니까?) –

+0

var_dump에서 하위 배열의 정보를 실제로 볼 수 없습니다. 그러나 나는 원래의 질문에 덧붙일 것이다. 왜 질문이 내려 졌는지 알고 싶습니다. 너무 애매하거나 너무 초보적인가요? – jason3w

답변

1

당신은 $result을 덮어 때마다이 루프 :

foreach($array as $saleprod){ 
    $details = explode('/', $saleprod->sku); 
    $result = $details[0]; 
} 
echo $result; 

은 당신이해야 할 것은 루프 내부 echo, 당신은에 추가 문자열이어야 $result 새로운 배열하자 또는 $result을 보자

foreach($array as $saleprod){ 
    $details = explode('/', $saleprod->sku); 
    echo $details[0], '<br>'; 
} 

// or 
$result = array(); 
foreach($array as $saleprod){ 
    $details = explode('/', $saleprod->sku); 
    $result[] = $details[0]; 
} 
foreach($result as $r) { 
    echo $r; 
} 

//or 
$result = ''; 
foreach($array as $saleprod){ 
    $details = explode('/', $saleprod->sku); 
    $result .= $details[0] . ' '; 
} 
echo $result; 
1

형식을 올바르게 이해하면 일련의 SKU가 생성됩니다 (참고 : 세트가 아니어야 중복 SKU가 배열에 여러 번 나타납니다). 그냥 컨텍스트의 비트에 대한

$skus = array(); 
// Outer loop over sales 
foreach($data->register_sales as $sale) { 
    // Inner loop over a sale's products 
    foreach($sale->register_sale_products as $product) { 
    // Add the SKU to the array 
    list($skus[]) = explode('/', $product->sku); 
    } 
} 

// $skus now contains all the SKUs 
print_r($skus); 

, 당신의 솔루션의 주요 문제는 (다시, 당신의 구조 내 해석을 기반으로)는 (오히려 배열에 $sale->register_sale_products를 병합보다 각 판매 $array을 덮어 쓸 것입니다 예를 들어 $array = array_merge($array, $sale->register_sale_products);을).

그러나 내부 루프를 사용하면 추가 개선이 가능하므로 $data->register_sales을 두 번 반복하는 것을 피할 수 있습니다.

라인 7에서 list을 사용하는 것은 선택 사항이지만 추가 변수 $details없이 할당이 가능합니다.

관련 문제