質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

9596閲覧

PHP 連想配列から特定のIDの配列だけ取り出す

lexuzon

総合スコア23

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

3クリップ

投稿2015/09/17 00:57

お世話になります。
以下の様な配列で、 例えば[id_shop] => 2 の配列のみを取り出したいです。

どなたかご教授の方、お願いいたします。

Array
(
[0] => Array
(
[id_order] => 402
[reference] => TZDTTARVF
[id_shop_group] => 1
[id_shop] => 6
[id_carrier] => 62
[id_lang] => 1
[id_customer] => 2
[id_cart] => 552
[id_currency] => 1
[id_address_delivery] => 6
[id_address_invoice] => 6
)

[1] => Array ( [id_order] => 401 [reference] => GNLHLHTMO [id_shop_group] => 1 [id_shop] => 2 [id_carrier] => 17 [id_lang] => 2 [id_customer] => 2 [id_cart] => 254 [id_currency] => 1 [id_address_delivery] => 6 [id_address_invoice] => 6 ) [2] => Array ( [id_order] => 400 [reference] => QGMACJAAP [id_shop_group] => 1 [id_shop] => 2 [id_carrier] => 17 [id_lang] => 1 [id_customer] => 2 [id_cart] => 253 [id_currency] => 1 [id_address_delivery] => 6 [id_address_invoice] => 6 ) [3] => Array ( [id_order] => 400 [reference] => QGMACJAZX [id_shop_group] => 1 [id_shop] => 5 [id_carrier] => 17 [id_lang] => 1 [id_customer] => 2 [id_cart] => 253 [id_currency] => 1 [id_address_delivery] => 6 [id_address_invoice] => 6 )

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

PHP 5.3以降では、その場で関数を書いてarray_filterに渡すことで、特定の条件を満たす要素だけ抜き出せます。

php

1$filtered_array = array_filter($original_array, function($row){ 2 return $row['id_shop'] == 2; 3});

投稿2015/09/17 01:03

maisumakun

総合スコア145183

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

lexuzon

2015/09/17 02:02

迅速なご回答ありがとうございます。 上記のコードで数字の場合は動作するのですが、 $values_id= explode('-',$this->context->cookie->shopContext); $filtered_array = array_filter($orders, function($row){ return $row['id_shop'] == $values_id[1]; }); (※ $values_id[1] の中身は '2' などの整数1つで array_filterの外側ではダンプできる) と整数の1つ入った変数を渡した場合に Notice: Undefined variable: values_id in とエラーが帰ってきます。 このケースの場合はどのようにしたら要素を抜き出す事ができるでしょうか? 度々恐れ入りますが、ご教授の方いただけましたら幸いに存じ上げ致します。
maisumakun

2015/09/17 02:07

内側の関数で外側の変数を使いたい場合は、function ($row) use ($value_id) { (これ以降は同じ)のように、useで明示する必要があります(この場合は不要でしょうが、$value_idを関数内で書き換える場合には use (&$values_id)と参照にすることとなりmす)。
lexuzon

2015/09/17 05:13

maisumakun様 お陰さまで、任意の配列のみを出力できました。 array_filterや、use の使い方について大変勉強になりました。 ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問