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

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

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

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

Q&A

解決済

2回答

226閲覧

PHP 配列で特定の値が含まれている場合は、keyごと削除したい。

ITOMO5963

総合スコア98

PHP

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

0グッド

0クリップ

投稿2022/06/03 08:20

配列で特定の値が値に含まれている場合は、Keyごと削除したい。

以下の場合、Keyの値の中に「0件」となっているものだけ削除したいです。
どのようにしたらよいのか、さっぱりわかりません。
array_keys関数でやってみましたが、うまくできません。
ご教示お願いいたします。

PHP

1$fromAreas = array( 2 "東京都" => "新宿区 全0件", 3 "神奈川県" => "横浜市 全1件", 4 "宮城県" => "福島市 全3件", 5 "北海道" => "札幌市 全0件" 6); 7 8var_dump($fromAreas); 9 10# 結果 # 11array(4) { 12 [東京都]=> 13 string(17) "新宿区 全0件" 14 [神奈川県]=> 15 string(17) "横浜市 全1件" 16 [宮城県]=> 17 string(17) "福島市 全3件" 18 [北海道]=> 19 string(17) "札幌市 全0件" 20} 21 22 23### 理想の結果 ### 24array(2) { 25 [神奈川県]=> 26 string(17) "横浜市 全1件" 27 [宮城県]=> 28 string(17) "福島市 全3件" 29}

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

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

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

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

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

maisumakun

2022/06/03 08:21

> array_keys関数でやってみましたが、うまくできません。 やってみたコードも書いていただけないでしょうか。
yambejp

2022/06/03 08:31 編集

「10件」だった場合も「0件」を含みますがどうしますか?
guest

回答2

0

ベストアンサー

PHP

1$fromAreas = array( 2 "東京都" => "新宿区 全0件", 3 "神奈川県" => "横浜市 全1件", 4 "宮城県" => "福島市 全3件", 5 "北海道" => "札幌市 全0件" 6 ); 7$result=array_filter($fromAreas,function($x){ 8 return !preg_match("/0件/",$x); 9}); 10print_r($result);

投稿2022/06/03 08:27

yambejp

総合スコア114843

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

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

退会済みユーザー

退会済みユーザー

2022/06/03 09:01

10件とか100件があると、消えそう
guest

0

PHP

1$deleteKeys = []; 2foreach ($fromAreas as $key => $value) { 3 if (strpos($value, '全0件') !== false) { 4 array_push($deleteKeys, $key); 5 } 6} 7 8foreach ($deleteKeys as $key) { 9 unset($fromAreas[$key]); 10}

「foreach」で配列内の値をチェックして、「全0件」が含まれる値があった場合、そのキーを削除用のキーとして保存します。
全てのチェックが終わったら、削除用のキーで配列要素の削除を行います。

チェックと削除の2段階にしたのは、チェック中に元配列を壊さないためです。

投稿2022/06/03 08:27

編集2022/06/03 08:48
Matsumon0104

総合スコア1005

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

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

tanat

2022/06/03 08:45 編集

if (strpos($value, '全0件') === false) だと、全0件を含まない場合のキーが取得されてしまいますね。 、 if (strpos($value, '全0件') !== false) もしくは if (!(strpos($value, '全0件') === false)) を意図されているのかなと思います
Matsumon0104

2022/06/03 08:48

ご指摘ありがとうございます。 「tanat」さんのご指摘通り「!==」の想定でした。 ソースの修正をしました。
tanat

2022/06/03 11:28

修正ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問