eコマース開発では、注文情報を処理する場合、製品IDなどの注文配列から特定のデータを抽出する必要があります。 PHPは非常に実用的な関数Array_Column()を提供します。これにより、多次元配列からデータの列を簡単に抽出できます。この記事では、Array_Column()関数を使用して、eコマースの順序で製品IDをすばやく抽出する方法を例で示します。
Array_Column()関数は、PHPに組み込まれた配列操作関数であり、マルチデミソンアレイからデータの列からデータを抽出するために使用されます。この関数の基本的な構文は次のとおりです。
array_column(array $input, mixed $column_key, mixed $index_key = null): array
$入力:操作する入力配列。
$ column_key :抽出された列名(配列のキー名にすることができます)。
$ index_key :オプション、結果配列のインデックス。
この関数は、抽出された列を含む配列を返します。
eコマースの注文データのセットがあり、各注文には複数のアイテムが含まれており、これらのアイテムのIDを抽出することが目標であるとします。
$orders = [
[
'order_id' => 'A123',
'items' => [
['product_id' => 1001, 'quantity' => 2],
['product_id' => 1002, 'quantity' => 1],
],
],
[
'order_id' => 'B456',
'items' => [
['product_id' => 1003, 'quantity' => 3],
['product_id' => 1004, 'quantity' => 1],
],
],
];
私たちの目標は、各注文からアイテムIDを抽出することです。 array_column()関数を使用して抽出できます。
$productIds = [];
foreach ($orders as $order) {
$productIds[] = array_column($order['items'], 'product_id');
}
print_r($productIds);
Array
(
[0] => Array
(
[0] => 1001
[1] => 1002
)
[1] => Array
(
[0] => 1003
[1] => 1004
)
)
各注文の配列構造を保持する代わりに、すべての注文のアイテムIDをフラット配列にマージする場合は、 array_merge()関数を使用して実装できます。
$productIds = [];
foreach ($orders as $order) {
$productIds = array_merge($productIds, array_column($order['items'], 'product_id'));
}
print_r($productIds);
Array
(
[0] => 1001
[1] => 1002
[2] => 1003
[3] => 1004
)
上記のコードを介して、すべての注文でアイテムIDを正常に抽出し、それらをフラット配列に統合しました。
注文データがリモートインターフェイスまたはAPIから届く場合、 file_get_contents()またはcurlを使用してデータを取得できます。たとえば、注文データがURL https://m66.net/api/ordersを備えたAPIから来ているとします。次のコードで注文データを取得し、アイテムIDを抽出できます。