在不同的函数中使用相同的数组

时间:2013-11-14 16:11:47

标签: arrays model-view-controller url-routing

情况如下:我有两个不同的功能和一个视图。我需要将数据从函数1发送到视图(2个数组),从该视图我需要将数据发送到函数2(1个数组)。

将数据从函数1发送到视图是一件容易的事,但我不知道如何使用函数2,因为我想发送给它的信息有一个函数1的数组加上其他新数据用户条目。

我知道没有机会通过URL发送数组,但我没有想法。

哪个是传递数据的最佳选择?

我发送到视图这个数据:

admin :(功能1的一部分)

//last part of the code
$this->data['conditions'] = $conditions;
$this->data['notselectedconditions'] = $notselectedconditions;
$this->parser->parse('admin/tools/showReport.tpl',$this->data);

在视图中我使用有关这些数组的信息,用户可以添加一些新条目。

视图:

<dt>Tipo de Usuario<dt>
    <dd><a href="{site_url()}admin/admin/reloadConditions/1">Pre Registrado</a></dd>

reloadConditions是函数2,需要函数1提供的函数加上用户的选择以便继续过滤结果。

我需要在功能2上提供的信息是:数组'条件'和用户新条目

2 个答案:

答案 0 :(得分:2)

经过长时间的讨论和聊天中的一些澄清,这是我提出的解决方案:

<?php

function addQueryParameters($url, $params) {
    $paramsStr = http_build_query($params);

    $fragment = parse_url($url, PHP_URL_FRAGMENT);
    $query = parse_url($url, PHP_URL_QUERY);

    $interUrl = '';
    if ($query === NULL) {
      $interUrl = '?';
    }
    if ($fragment !== NULL) {
        $interUrl = '&';
    }

    $interUrl .= $paramsStr;

    if ($fragment !== NULL) {
        $pos = strpos($url, '#' . $fragment);
        $url = substr($url, 0, $pos) . $interUrl . substr($url, $pos);
    }

    return $url;
}

function linkifyFilterConditions($url, $conditions) {
    return addQueryParameters($url, array('conditions' => $conditions));
}

// Tests
// TODO: replace by unit tests
var_dump(linkifyFilterConditions('http://example.com/blub', [1,2,3]));
var_dump(linkifyFilterConditions('http://example.com/blub#a', [1,2,3]));
var_dump(linkifyFilterConditions('http://example.com/blub?a=b#a', [1,2,3]));

用法(在OP的视图中):

$href = 'yourscript?conditions[]=a'; 
$href = linkifyFilterConditions($href, $conditions); 

echo '<a href="' . $href . '">Test</>';

答案 1 :(得分:-1)

如何将数组放入$_SESSION

http://www.phpriot.com/articles/intro-php-sessions/7