0

私はhtmlソースを解析して得たこのような配列を持っています:

Array
(
    [0] => 12345
    [1] => 54321
    [2] => 32546
    [3] => 98754
    [4] => 15867
    [5] => 75612
)

変数に入れて、次のように URL の前に foreach ループを実行すると:

$x = Array;
foreach ($x as $y){
$r = 'http://example.com/' . $y;
echo $r . '<br>';
}

次のように出力されます。

http://example.com/12345
http://example.com/54321
http://example.com/32546
http://example.com/98754
http://example.com/15867
http://example.com/75612

ブラウザで実行すると、これらの出力URLのそれぞれが、次のようなオブジェクトを出力します。

{
   "key1": "value1",
   "key2": "value2",
   "key3": "value3"
}

または次のように:

{
   "error": {
      "errorMessage": "errorMessageValue",
      "errorType": "errorTypeValue"
   }
}

だから私の質問は...エラーオブジェクトではなく、有効なキーと値のペアを持つ配列のみが得られるように、phpで配列をフィルタリングするにはどうすればよいですか。

提案されたように、私は次のことを試しました:

$x = Array;
foreach ($x as $y){
$link = 'http://example.com' . $y;
$json = file_get_contents($link);
$array = array_filter((array)json_decode($json), "is_scalar");
echo '<pre>';
echo json_encode($array) . '<br>';
echo '</pre>';
}

ただし、同じ配列を出力し、エラー オブジェクトを除外しません。

4

2 に答える 2

4
$array = array_filter((array)json_decode($json), "is_scalar");

これにより、配列からすべてのオブジェクトが除外され、値がオブジェクトでも配列でもないキー => 値のペアのみが得られます。

于 2013-07-27T00:36:25.573 に答える