どうも、こんにちは!
APIを触っていると別々のAPIから値を取ってきて後でまとめないといけない場合が生じるときがあります。
例えば、AmazonのSP-APIの商品データを取得したいと思った時に商品の体積や重さはこちらのAPIで取得し、ランキングや価格はあちらのAPIで取得しないといけないといった場面があります。
特にbatchのAPIで一度にまとめて別々の商品を20個先に取らないといけないような場合には一気に20個の商品の価格を取得し、また次にその同じ20個の商品の重量を取得して、後から商品ごとに分けるといった流れになる場合が出てきます。
こう言った時には例えば商品番号(Amazonの場合はASINなど)を因子にして連想配列化しておくと後から取り出しやすくなります。
まぁこのやり方は自分で考えてやってみた方法で、これが正解かは分かりませんが満足の行く動きが出ているのでこれでヨシとしています。
それでは、簡単に解説したいと思います。
PHPで商品番号をキー(因子)にして連想配列化する
例えば、商品番号がabcという商品があったとしましょう。
そして、重量が300gだったとしましょう。そして値段は、1000円だったとしましょう。
これをabcの重量が300、価格が1000という感じでabcが因子となる連想配列を作ります。
$weight_array = array(); //配列化
$price_array = array(); //配列化
$code = 'abc';
$weight = '300';
$price = '1000';
$weight_array["$code"] = $weight; //配列の$weight_arrayに["$code"]をくっつける
$price_array["$code"] = $price; //同様
実際にはjsonの結果をforeachなどで取り出しますので、上のコードの300や1000も変数になっていると思います。
このコードのミソは、配列にした$weight_arrayや$price_arrayに[]でキーをくっつけるところにあります。
これが初めのうちはやり方が思いつかなくて難儀しました笑
こうすると、商品abcの値を取り出すときは、
$weight_array[‘abc’]としてやるとabcの重量が出ます。
同様に、$price_array[‘abc’]としてやるとabcの価格が取り出せます。
これは結構便利に使えます。
今回はweightとpriceを別々の配列にしてやりました。
しかし、このweightやpriceも因子にしてしまうことができます。
それについてはまた後述したいと思います。
コメント