PHP:RecursiveArrayIterator无法正常工作

时间:2014-07-21 08:21:29

标签: php arrays wordpress foreach

这是我的阵列:

$wp_session = array(
    'id' => $id,
    'id2' => $id2,
    'p1' => $p1,
    'p2' => $p2
);

结果是给了我一个Recursive_ArrayAccess所以我搜索了如何修复它并遇到了这些答案:

PHP - Recursive Multidimension Array iterator PHP foreach() with arrays within arrays?

所以我添加/更改了我的foreach语句:

    $iterator = new RecursiveIteratorIterator(new RecursiveArrayIterator($wp_session); 

    //Split the parameters with &
    foreach ($iterator as $key => $value) {
            if(!empty($value)){
                $fields .= $key . '=' . $value . '&';
            }
            //Remove the last &
            $fields2 = substr($fields, 0, -1);
    }

然后页面中断了。

我也尝试过:

    $iterator = array_walk_recursive($wp_session);

页面不会中断,但$ fields2不会在下一个foreach语句中输出数据。这是整个代码:

    //Start a session

    $wp_session = WP_Session::get_instance();

    //Get the current parameters

    $id = $_GET['id'];
    $id2 = $_GET['id2'];
    $p1 = $_GET['p1'];
    $p2 = $_GET['p2'];
    $wp_session = array(
        'id' => $id,
        'id2' => $id2,
        'p1' => $p1,
        'p2' => $p2
    );

    //array_walk_recursive($wp_session);
    //$iterator = new RecursiveIteratorIterator(new RecursiveArrayIterator($wp_session); 
    $iterator = array_walk_recursive($wp_session);

    //Split the parameters with &
    foreach ($iterator as $key => $value) {
            if(!empty($value)){
                $fields .= $key . '=' . $value . '&';
            }
            //Remove the last &
            $fields2 = substr($fields, 0, -1);
    }

    if( is_admin() )
        return $items;

    //Get the menu items and add the above parameters to the menu items urls

    foreach( $items as $item ) 
    {
        if($wp_session){
            $item->url .= '?' . $fields2;
        }
    }
    return $items;

有人可以解释一下我做错了什么吗?任何形式的帮助或建议将不胜感激!

2 个答案:

答案 0 :(得分:2)

  

然后页面中断了。

该页面必须中断:

 $iterator = new RecursiveIteratorIterator(new RecursiveArrayIterator($wp_session); 

计算(的数量,然后计算)的数量,然后开始使用一个好的IDE。如果你仍然没有得到提示,那么你就是1 )短。

答案 1 :(得分:2)

Overkill,似乎你只想从数组中创建一个参数字符串。

对此有http_build_query()

$fields = http_build_query($wp_session);

See it in action