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

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

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

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

Q&A

解決済

4回答

2127閲覧

PHP ユーザ定義関数の書き方について

potemaru

総合スコア13

PHP

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

0グッド

0クリップ

投稿2016/08/21 12:13

編集2016/08/21 13:27

###前提・実現したいこと
3桁の数字の配列が、変数$iの数字と一致(数字の並び順は関係なし)していたら、
"OK"のメッセージを表示させるプログラムを書きたいです。

###発生している問題・エラーメッセージ

OKメッセージを表示させるためには、function内でどういった処理をすれば良いのでしょうか?
メッセージは変数$msgに格納し、好きな場所で表示できるようにさせたいです。

###該当のソースコード
PHP

<?php $i = 321; $array = array(312,456,789); $array = array_pad($array, 10, NULL); function some_number($a,$b) { $a = str_split($a); //3桁の数字を配列に変換 $b = str_split($b); sort($a); //配列にした3桁をソート sort($b); return $a === $b; } some_number($array[0],$i); some_number($array[1],$i); some_number($array[2],$i); echo $msg; //変数$iと配列内の数字が一致したらメッセージを表示 ?>

###試したこと

###補足情報(言語/FW/ツール等のバージョンなど)
言語:PHP

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

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

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

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

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

guest

回答4

0

ベストアンサー

こんなかんじ?

PHP

1<?php 2$i = 321; 3$array = array(312,456,789); 4 5function dig_sort($x) { 6 $s = (is_int($x) ? $x . '' : $x; 7 $a = explode('', $s); 8 sort($a); 9 return implode('', $a); 10} 11 12function is_similar($a, $b) { 13 $f = true; 14 $b1 = dig_sort($b); 15 foreach ($a as $v) { 16 if (dig_sort($v) != $b1) { 17 $f = false; 18 break; 19 } 20 } 21 return $f; 22} 23 24$msg = (is_similar($array, $i)) ? 'OK' : 'NG'; 25 26echo $msg; 27?>

投稿2016/08/21 13:16

編集2016/08/22 09:08
takasima20

総合スコア7458

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

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

0

php

1<?php 2$i = 321; 3$array = array(312, 456, 789); 4$array = array_pad($array, 10, NULL); 5 6function some_number($a,$b) { 7 $a = str_split((string) $a); //3桁の数字を配列に変換 8 $b = str_split((string) $b); 9 10 if (count($a) !== count($b)) { 11 return false; 12 } 13 14 $diff = array_diff($a, $b); 15 return empty($diff); 16} 17 18$msg = ''; 19foreach ($array as $entry) { 20 if (some_number($entry, $i)) { 21 $msg = 'OK'; 22 break; 23 } 24} 25 26echo $msg; //変数$iと配列内の数字が一致したらメッセージを表示

投稿2016/08/22 09:43

KiyoshiMotoki

総合スコア4791

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

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

0

$iが3桁限定なら順列は6通りしかないので、6個の順列で in_array判定するのが素朴・簡明かと思います($j0,$j1,..は使わず直に記載しても可)。
$j0 = $i;
$j1 = $i[0] . $[2] . $i[1];
$j2 = $i[1] . $[0] . $i[2];
$j3 = $i[1] . $[2] . $i[0];
$j4 = $i[2] . $[0] . $i[1];
$j5 = $i[2] . $[1] . $i[0];
if ((in_array($j0,配列)) ||
(in_array($j1,配列)) ||
(in_array($j2,配列)) ||
(in_array($j3,配列)) ||
(in_array($j4,配列)) ||
(in_array($j5,配列)) )
$msg = "OK";
else
$msg = "NG";

投稿2016/08/21 22:02

km668

総合スコア65

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

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

0

数字が3桁で構成されている前提です。

php

1$i = 312; 2$array = array(312,456,789); 3$array = array_pad($array, 10, NULL); 4 5$msg = (in_array($i, $array)) ? "found" : "not found";

投稿2016/08/22 01:55

A.Ichi

総合スコア4070

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問