그래, 배열에서 정보를 찾고 전달 된 자격 증명을 기반으로 블록을 반환하고 싶습니다. 내가 지금하고있는 방식이 효과가 없다. 나는 더 짧은 과정과 더 어리석은 증거 과정을 찾고있다.배열 검색 및 결과 얻기
public function get_product($product_id, $color, $size)
{
$results = $this->pf->get('products/'.$product_id);
$vars = $results['variants'];
$details = array();
foreach($vars as $var)
{
if(!in_array($product_id, $details))
{
if($var['product_id'] == $product_id)
{
if($var['size'] == $size)
{
if($var['color'] == $color)
{
$details[$var['id']] = array(
'id' => $var['id'],
'name' => $var['name'],
'image' => $var['image'],
'price' => $var['price'],
);
}
}
}
}
}
return $details;
}
이는 PRODUCT_ID, 색상 및 크기를받습니다
는 지금은이 있습니다. 경우에 따라 $color
이 null이거나 때때로 $size
이 null이고 때로는 $color
과 $size
이 모두 null이고 $product_id
과 일치하는 배열을 하나만 찾아야합니다. 지금 아무것도 반환됩니다
$details[$var['id']] = array(
'id' => $var['id'],
'name' => $var['name'],
'image' => $var['image'],
'price' => $var['price'],
);
:
은 내가 돌아 걸려 라하는 것은 이것이다. 예는 $results
반환이 : (.이 내가 검색해야 할 것입니다)
{
"code": 200,
"result": {
"product": {
"id": 1,
"type": "POSTER",
"brand": null,
"model": "Poster",
"image": "https://d1yg28hrivmbqm.cloudfront.net/products/poster_18x24.jpg",
"variant_count": 9,
"files": [
{
"id": "default",
"title": "Print file",
"additional_price": null
},
{
"id": "preview",
"title": "Mockup",
"additional_price": null
}
],
"options": []
},
"variants": [
{
"id": 4464,
"product_id": 1,
"name": "Poster 12×12",
"size": "12×12",
"color": null,
"color_code": null,
"image": "https://d1yg28hrivmbqm.cloudfront.net/products/1/4464.jpg",
"price": "9.00"
},
color
이 null
로 반환하는 방법을 알 수 있습니다. size
그렇게 할 수 있습니다. 그래서 기본적으로 지정된 product_id, 크기 및 색상에 대해 반환 된 배열을 검색하는 더 빠르고 좋은 방법을 원합니다. 그래서 이 반환되고과 일치하는 해당 변형 블록이 제출 된 변수와 일치해야합니다.
나는 내가 성취하려고하는 것을 이해했으면한다.
UPDATE는
이 내가 필요로하고 것입니다.
내 사이트에서 고객은 제품 (이 경우 포스터)을 선택합니다. 카트에 추가하기 전에 크기를 선택하라는 메시지가 표시됩니다. 12x12라고 가정 해 보겠습니다. API가 작동하는 방식은 '상단'항목이 있고 크기 및 색상이 포함 된 '변형'항목이 더 작습니다. 각 변형은 크기가 다른 포스터입니다. 포스터 제품을 얻는 유일한 방법은 포스터의 모든 변형을 수신하는 것입니다. 그러나 각각의 "변형"은 올바른 "제품"을 주문하기 위해 API에 보내는 "ID"가 다릅니다.
그래서 제품을받습니다. 변형 된 제품이므로 벌크 또는 모든 색상 및 크기로 변형됩니다.
"variants": [
{
"id": 4464,
"product_id": 1,
"name": "Poster 12×12",
"size": "12×12",
"color": null,
"color_code": null,
"image": "https://d1yg28hrivmbqm.cloudfront.net/products/1/4464.jpg",
"price": "9.00"
},
{
"id": 1349,
"product_id": 1,
"name": "Poster 12×16",
"size": "12×16",
"color": null,
"color_code": null,
"image": "https://d1yg28hrivmbqm.cloudfront.net/products/1/1349.jpg",
"price": "11.00"
},
그러나 고객이 12x12 크기의 포스터를 원했던 것을 기억하십니까? 12x12 포스터 인쇄 요구 만 보내면됩니다. 따라서 API에 12x12 크기와 일치하는 변형 ID를 보내야합니다.
각 변형 제품을 검색하여 포스터의 product_id 및 12x12의 크기 요구 사항과 일치하는 올바른 변형을 찾는 방법이 필요합니다.
{
"id": 4464,
"product_id": 1,
"name": "Poster 12×12",
"size": "12×12",
"color": null,
"color_code": null,
"image": "https://d1yg28hrivmbqm.cloudfront.net/products/1/4464.jpg",
"price": "9.00"
},
올바른 변형을 찾으면 모든 정보를 새 배열로 수집하여 반환해야합니다.
//Get the product based on the supplied product_id. ($results)
//Break that array down into just the variants. ($vars)
//Search the $vars array for a block that matches the product_id.
//Search those $vars blocks for a single one that matches the size.
//If color is supplied, search those $vars blocks for a single one that matches the color.
//If size and color are supplied, a single block should be returned that matches all three variables (product_id, size, and color). Sometimes size and/or color is `null`. But a product_id is always supplied.
나는 조금 더 나아질 필요가있는 부분을 정리하기를 바랍니다.
질문의 명확성. 객체를 검색하고 지정한 세부 정보가있는 배열 만 반환하겠습니까? –
'product_id, size, color'에 대해 "result"-> "variant"(문제의 세 번째 코드 블록에 표시된 예제에서)를 검색하고에서 특정 정보 (문제의 두 번째 코드 블록)를 반환하고 싶습니다. 그 "블록". – user3968645
개체에서 product_id, 크기 및 색을 검색하려고합니다. 한 가지는 함수가 잘못 만들어진 것입니다. 나는 일하는 것을 만들거야. 또한 json 디코드 PHP 메서드가 필요 –