Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 根据设置的值合并数组值_Php_Arrays - Fatal编程技术网

Php 根据设置的值合并数组值

Php 根据设置的值合并数组值,php,arrays,Php,Arrays,目前,我正在尝试使我的URL缩短器脚本能够跟踪来自Google Analytics的UTM变量。我还想提供我自己的(活动/关键字/来源等)变量 我正在尝试筛选$\u GET,挑选“approved”键/值对,并将每个键设置为UTM变量具有更高优先级的条件(我只想在数据库中存储一个值) 我的代码当前为: //Parse $_GET and only get the key/pairs that we need and store them in global $url_params for use

目前,我正在尝试使我的URL缩短器脚本能够跟踪来自Google Analytics的UTM变量。我还想提供我自己的(活动/关键字/来源等)变量

我正在尝试筛选$\u GET,挑选“approved”键/值对,并将每个键设置为UTM变量具有更高优先级的条件(我只想在数据库中存储一个值)

我的代码当前为:

//Parse $_GET and only get the key/pairs that we need and store them in global $url_params for use through out the script
function set_url_params($allowed=NULL) { // $allowed is arg to add new values in future dev 
global $url_params;

$allowed = array( 
    'l', // Redirect key (e.g http://example.com?l=a1dFd7)
    'utm_campaign', 
    'campaign', 
    'utm_source' , 
    'source', 
    'utm_medium', 
    'medium', 
    'utm_term', 
    'term', 
    'keyword',
    'kw',
    );

    $approved = array_intersect_key($_GET, array_flip($allowed));

    foreach($approved as $key => $value) {
        strip_tags(urldecode(trim($value)));
        $url_params[$key] = $value;
    }

    //Assign variables to global $url_params variable so other functions can use them.
    //NOTE: Google Analytics UTM parameters take precedence over script values.
    $url_params['l'] = isset($approved['l']) ? $approved['l'] : NULL ;
    $url_params['campaign'] = isset($approved['utm_campaign']) ? $approved['utm_campaign'] : $approved['campaign'];
    $url_params['source'] = isset($approved['utm_source']) ? $approved['utm_source'] : $approved['source'];
    $url_params['medium'] = isset($approved['utm_medium']) ? $approved['utm_medium'] : $approved['medium'];
    $url_params['term'] = isset($approved['utm_term']) ? $approved['utm_term'] : $approved['term'];
    $url_params['keyword'] = isset($approved['keyword']) ? $approved['keyword'] : $approved['kw'];
    // Just in case $url_params doesn't have a 'keyword' set, we will use 'term' instead.
    $url_params['keyword'] = isset($url_params['keyword']) ? $url_params['keyword'] : $url_params['term'];

}

我基本上想找到一种更干净的方法来完成这项工作,而不需要所有的isset()。对于我想取消设置的未定义变量,我也会收到通知错误(在E_ALL中运行),因此我不会收到这些错误。

可能是类似的

$params = array(
    'l'        => array('default' => null),
    'campaign' => array('default' => null, 'alt' => 'utm_campaign'),
    ...
);

$url_params = array();

foreach ($params as $key => $info) {
    $url_params[$key] = $info['default'];
    if (isset($info['alt'], $_GET[$info['alt']])) {
        $url_params[$key] = $_GET[$info['alt']];
    }
    if (isset($_GET[$key]) {
        $url_params[$key] = $_GET[$key];
    }
}