$arrayと$strを変えることなく、$is_matchをtrueにできませんでしょうか?
ある場面で$strとして確定したものがあるのですが、それが$arrayのvar_dumpであることを示したいと思っています
はじめから$strを別の形で出力しておけばと思いますが、とりあえず変えずにできれば知りたいです
php
1// 変えない 2$array = array('key'=>'value'); 3 4// 変えない 5$str = 'array(1) { 6 ["key"]=> 7 string(5) "value" 8}'; 9 10// 変えてもいい 11$dump = var_dump($array); 12 13// $strとして確定したものが、$arrayのvar_dumpであることを示したい 14$is_match = $str === $dump; 15var_dump( $is_match );
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/14 07:28
回答3件
0
var_dump()
が、絶対条件であれば、** できません**。
$dump = var_dump($array);
返り値
値を返しません。
とあるように var_dump()
は、画面出力だけでプログラムに値を返しませんので、 $dump は、null になるのではないかと思います。
var_dump()
の結果を比較したいということであれば、画面に出力して目視で判断するしか方法は無いと思います。
投稿2020/08/14 08:14
総合スコア25171
0
var_export()を使うとか?
PHP: var_export - Manual
var_dump()の出力は(型名やサイズなど)あくまでデバッグ的情報が付帯して、
そのままPHPコード中に展開することは文法エラーを引き起こします。
var_export()を使えば、PHPコード中に展開しても文法エラーを起こしません。
あるいは、複雑なデータ構造すら文字列化するためには、
PHP: serialize - Manual
でしょうか。
var_dump()による出力は直に変数に持たせることができず直接webブラウザに出力されるので、
質問文中に書いてあるような変数への代入はできません。
PHP: var_dump - Manual
その出力を敢えて変数に持たせることの重要性がとくになければ、
例えばserialize()したあとの文字列を事前事後と比較すれば、
内容の一致を確認できるかと。
どう使うかは、それぞれのページのサンプルコードをご確認ください。
投稿2020/08/14 07:07
編集2020/08/14 07:36退会済みユーザー
総合スコア0
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/14 07:11
退会済みユーザー
2020/08/14 07:15
2020/08/14 07:23
2020/08/14 07:25
退会済みユーザー
2020/08/14 07:30
2020/08/14 07:32
退会済みユーザー
2020/08/14 07:42
退会済みユーザー
2020/08/14 07:44
2020/08/14 07:51
退会済みユーザー
2020/08/14 07:57
2020/08/14 08:05
0
ベストアンサー
本来は print_r($array, true)
などで解決できるはずですが、比較対象の出力文字列が var_dump での出力になっているから var_dump() の出力を取得したい、ということですよね。
var_dump() は返り値を持たないの(標準出力に直接出力する)関数ですので、var_dump() そのものの出力を取得したいということであれば、出力バッファリングを利用する必要があるかと思います。
PHP
1ob_start(); 2var_dump($array); 3$dump = rtirm(ob_get_contents()); 4ob_end_clean();
ただし、既に出力バッファリングを利用している場合でそれ以前に出力がある場合はこの処理をする前に
- 既存のバッファを取得
- バッファをクリア
し、処理後にバッファに戻す必要があるかと思います。
PHP
1// 変えない 2$array = array('key'=>'value'); 3 4// 変えない 5$str = 'array(1) { 6 ["key"]=> 7 string(5) "value" 8}'; 9 10// 変えてもいい 11// $dump = var_dump($array); 12 13ob_start(); 14var_dump($array); 15$dump = rtrim(ob_get_contents()); 16ob_end_clean(); 17 18// $strとして確定したものが、$arrayのvar_dumpであることを示したい 19$is_match = ($str === $dump); 20var_dump( $is_match );
投稿2020/08/14 08:06
編集2020/08/14 08:27総合スコア2037
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/14 08:17
2020/08/14 08:19
2020/08/14 08:33
2020/08/14 08:35
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。