0

配列に書き込まれた値のすべての値を出力する必要があります。

[subscriber] => Array
    (
        [name] => Subscriber
        [capabilities] => Array
            (
                [read] => 1
                [level_0] => 1
            )
        [default] => Array
            (
                [deft] => Array (
                              [one] => 2
                              [two] => 3
                        )
                [deft_one] => Array (
                               [one] => t
                               [two] => h
                        )
            )

    )

配列の下に各値を出力する必要があります。そこで、再帰関数を使用しました。しかし、私は結果をカントします。再帰関数で私を助けてください。

すみません、今まで頑張ってきました。実際には wp-option テーブルの値を出力する必要があります。多くのシリアライズ配列があります。すべての値を個別に印刷したい。つまり、以下に記述されたコードを使用すると、配列が得られました。

function option_value_change () {
  global $wpdb;
  $myrows = $wpdb->get_results( "SELECT *
  FROM `wp_options`");
    $temp_url = get_option('siteurl');
    $site_url = get_site_url();
    foreach ($myrows as $rows){
      $option = get_option($rows->option_name);
                //print_r($option);
        get_option_value($option);
    }
}

私はテーブルを得ることができます。しかし、配列で。どの配列に配列がありますか。そこで、関数「get_option_value($option)」を使用しました。以下に書かれているように

function get_option_value($option) {
    if(!is_object($option) && !is_array($option)){
        echo $option;
    }
    else{
            foreach($option as $option_value){
                if(!is_array($option_value)){
                    echo $option_value;
                }
                else {
                    get_option_value($option_value);

                }
            }
    }
}

しかし、私はすべての価値を得ることができません。そのエラーを与える

Object of class stdClass could not be converted to string.

では、配列のすべての値を出力するにはどうすればよいですか。

4

2 に答える 2

1

例を使用できますRecursiveArrayIterator

$data = array(
  'subscriber' => array(
    'name' => 'Subscriber',
    'capabilities' => array(
      'read' => 1,
      'level_0' => 1,
    ),
    'default' => array(
      'deft' => array(
        'one' => 2,
        'two' => 3,
      ),
      'deft_one' => array(
        'one' => 't',
        'two' => 'h',
      ),
    ),
  ),
);

echo "<pre>";
$it = new RecursiveIteratorIterator(new RecursiveArrayIterator($data));
foreach($it as $var)
{
    echo $var , PHP_EOL ;
}

出力

Subscriber
1
1
2
3
t
h
于 2013-02-12T12:23:12.140 に答える
0

私はそれをテストしませんでしたが、あなたはアイデアを得ることができます。

function printArr($obj){

    if(!is_array($obj)){

        echo $obj;
        return;
    }
    else if(is_array($obj)){

        foreach ($obj as $key => $value) {
            printArr($obj[$key]);
        }
    }
}
于 2013-02-12T12:17:48.207 に答える