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 回答