###実現したいこと
検証対象$response
に対して、型が$required_info
の指定通りであることを検証する関数を作りたいです。
###問題
パターン1やパターン2のように次元の数や構造が異なるのですが、いずれにも対応できるような関数が作れません。
###パターン1
PHP
1// 検証対象 2$response = [ 3 [ 4 'title' => 'shortcake' 5 ,'tag_list' => ['kids'] 6 ,'ranking' => 1 7 ,'side' => [ 8 'url' => 'http...' 9 ,'name' => 'karaage' 10 ,'id' => 10 11 ] 12 ] 13]; 14 15// 型を指定 16$required_info = [ 17 'title' => 'string' 18 ,'tag_list' => 'array' 19 ,'side' => [ 20 'url' => 'string' 21 ,'name' => 'string' 22 ,'id' => 'integer' 23 ] 24]; 25
###パターン2
PHP
1// 検証対象 2$response = [ 3 'titles' => [ 4 'name' => 'coconut juice' 5 ,'thumbnails' => 'http...' 6 ] 7 ,'data' => [ 8 'id' => [ 9 'a_id' => 10 10 ,'b_id' => 20 11 ] 12 ] 13]; 14 15// 型を指定 16$required_info = [ 17 'titles' => [ 18 'name' => 'string' 19 ,'thumbnails' => 'string' 20 ] 21 ,'data' => [ 22 'id' => [ 23 'a_id' => 'integer' 24 ] 25 ] 26]; 27
###関数イメージ
作りたい関数のイメージはこちらです。
php
1// 実行 2$result = validate_required_in_response( 'cake', $response ); 3var_dump($result); 4 5// $responseのリストそれぞれについて、$required_info で指定した型がおかしければfalseを返す 6function validate_required_in_response( $kind, $response ){ 7 8 // 引数に応じて型を指定 9 if ( $kind === 'cake' ) { 10 // 型を指定 11 $required_info = [ 12 'title' => 'string' 13 ,'tag_list' => 'array' 14 ,'side' => [ 15 'url' => 'string' 16 ,'name' => 'string' 17 ,'id' => 'integer' 18 ] 19 ]; 20 } 21 22 elseif ( $kind === 'drink' ) { 23 // 型を指定 24 $required_info = [ 25 'titles' => [ 26 'name' => 'string' 27 ,'thumbnails' => 'string' 28 ] 29 ,'data' => [ 30 'id' => [ 31 'a_id' => 'integer' 32 ] 33 ] 34 ]; 35 } 36 37 // 検証開始 38 $result = true; 39 foreach ( $response as $value ) { 40 // 検証対象$responseに対して、型が$required_infoの指定通りであることを検証したいです 41 } 42 return $result; // 型がおかしければfalseを返したい 43}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/08 05:31
2020/07/08 05:37
2020/07/08 05:42
2020/07/08 05:45
2020/07/08 05:48
2020/07/08 06:42
2020/07/08 06:49
2020/07/08 06:56
2020/07/08 07:14 編集
2020/07/08 07:18
2020/07/08 07:27
2020/07/08 07:33
2020/07/08 07:33
2020/07/08 07:52