🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
PHP

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

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

解決済

3回答

3194閲覧

Php 特定の文字列を含む配列だけ出力

kyonie

総合スコア7

PHP

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

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

0グッド

0クリップ

投稿2019/11/16 00:53

特定の文字列を含む配列のみだけ出力したいです。

$array=[aaa,bbb,ccc];
$filter =array_filter($array,"a");
echo $filter;

aを含むaaaの配列だけ出力したいのですが、
どこがいけないでしょうか?

初心者でいたらない点ばかりでしょうが
よろしくお願いいたします。

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

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

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

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

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

m.ts10806

2019/11/16 03:51

コードはマークダウンのcode機能を利用してご提示ください。 またコードとやりたいことだけで「起きている現象」「何が問題なのか」を書かれないと 「何を解消したいのか」が伝わりません。きちんと記載してください。(質問は編集できます) >初心者でいたらない点ばかりでしょうが 「初心者アイコン」を質問につけられるので質問に書くのではなくアイコンをつけるにとどめてください。 要件以外の文言はノイズと捉えられやすいです。
kyonie

2019/11/16 23:02

ありがとうございます。 勉強になります。
m.ts10806

2019/11/17 02:11

質問は編集できますので適宜ご対応ください
guest

回答3

0

ベストアンサー

三か所間違えています。
これらを修正すると以下のようになります。

php

1$array = ['aaa','bbb','ccc']; 2$result = array_filter( 3 $array, 4 function($array) { 5 return strpos($array,'a') !== false; 6 } 7); 8print_r($result);

投稿2019/11/16 00:57

編集2019/11/16 01:15
kyoya0819

総合スコア10429

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

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

guest

0

aを含むaaaの配列だけ出力したいのですが、

どこがいけないでしょうか?

PHPマニュアルを見てみると、array_filterの第2引数はcallableとなっています。つまり、"a"と指定すると、「aという名前の関数を呼び出して条件判定する」という意味になってしまいます。

投稿2019/11/16 01:02

maisumakun

総合スコア145971

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

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

kyonie

2019/11/16 23:01

ありがとうございます! 勉強になりました。
guest

0

回答ではないです

配列操作において、初学者の覚えるべき関数は foreach です。
foreach は万能です!

foreach が使えるようになれば、他の配列系の関数を使用するケースはごく僅かです。

array_filter を使用するにはコールバックの概念への理解が必要となるので、foreach で書き直してみては?

追記
どちらかというと、ループ方法より、文字列の比較方法の方が仕様に影響されます。
以前検証用に作成したものの抜粋を貼っておきます。
(検証内容が全然別の内容なのでちょっとコードはアレですがw)
マニュアル片手に $findme を適当に弄ってみると面白いです。
文字列比較関数は他にもあるので、調査してみても面白いと思います。

php

1<?php 2$array = ['aaa', 'bbb', 'ccc', 'AAA', 'BBB', 'CCC', 'Abc', 'Bbb', 'CBA']; 3$findme = "a"; 4// $findme = "ab"; 5foreach($array as $key => $val){ 6 echo "key '" . $key . "' => val '" . $val . "'" . PHP_EOL; 7 echo join([ 8 strpos($val, $findme) !== false ? "strpos " : NULL, 9 stripos($val, $findme) !== false ? "stripos " : NULL, 10 strstr($val, $findme) !== false ? "strstr " : NULL, 11 preg_match('/' . $findme . '/', $val) !== 0 ? "preg_match" : NULL, 12 PHP_EOL, 13 ]); 14}

投稿2019/11/16 03:27

編集2019/11/17 06:41
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

kyonie

2019/11/16 23:01

ありがとうございます! 勉強になります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問