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

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

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

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

Q&A

解決済

2回答

864閲覧

PHP 複数の変数の中身が配列か否かを効率よく確認する方法

退会済みユーザー

退会済みユーザー

総合スコア0

PHP

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

0グッド

2クリップ

投稿2018/01/27 05:39

編集2018/01/27 08:08

配列が入った変数が複数あって、それらを結合したいのですが、

$array = array_merge($a, $b, $c, $d, $e, $f, $g, $h);

変数の中身が配列ではない時もあり、その時にはエラーになってしまいます。
is_arrayを使えば中身が配列なのかチェックできますが、チェックして配列ではなかった場合に中身を空にするような処理は可能でしょうか?
思いついたのはifでちまちまと確認して…

if(!is_array($a)) { $a = array(); } if(!is_array($b)) { $b = array(); }続く…

という方法しか無いのですが、これは効率が悪そうなのでもっと良い方法があればお教えください。
よろしくお願い致します。

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

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

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

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

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

guest

回答2

0

ベストアンサー

reduce を使ってまとめるなら、

$a = 1; $b = "abcdef"; $c = ["1","2","3"]; $d = ['a' => 1, 'b' => 2, 'c' => 3]; $e = new stdClass(); $e->x = 'x'; $e->y = 'y'; function array_value_merge(...$args){ return array_reduce($args,function ($carry, $arg){ if(!is_array($arg)){ $arg = []; } return array_merge($carry,$arg); },[]); } $m = array_value_merge($a,$b,$c,$d,$e); var_dump($m);

結果は

array(6) { [0]=> string(1) "1" [1]=> string(1) "2" [2]=> string(1) "3" ["a"]=> int(1) ["b"]=> int(2) ["c"]=> int(3) }

投稿2018/01/27 22:07

kero1209

総合スコア431

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

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

退会済みユーザー

退会済みユーザー

2018/02/01 03:05

返答が遅くなり申し訳ございません。上手くできました。ありがとうございます。
guest

0

試してみたので いらない文がはいっていますが・・・。

php

1$a = null; 2$b = null; 3$c = null; 4$d = array(); 5$e = null; 6$f = null; 7$g = null; 8$h = null; 9 10$array1 = array($a, $b, $c, $d, $e, $f, $g, $h); 11$array2 = array(); 12 13foreach ($array1 as $key => $value) 14{ 15 if (is_array($value)) 16 { 17 $array2 = array_merge($array2, $value); 18 echo "キー : " . $key . "\n"; 19 } 20}

ではいかがでしょうか?

投稿2018/01/27 08:10

showkit

総合スコア1638

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

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

退会済みユーザー

退会済みユーザー

2018/02/01 03:05

返答が遅くなり申し訳ございません。上手くできませんでした。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問