Php:如何将变量传递到函数中,使用或不使用类方法[关闭]

问题描述 投票:0回答:1

我已经阅读并测试了 stackoverflow 上的所有解决方案。

我创建了一个 Wordpress 插件,但我认为问题不是来自这个 CMS。

我需要将第一个函数的输出传递给第二个函数,我尝试了全局、类方法和公共函数,但每次都不起作用:

所以我想将 getusercountrycode() 输出传递给 atv_redirect():

//try/ class atvRed {
    //try/ public function __construct( ){
            //add_action('template_redirect',  array( $this,'atv_redirect'));
    //try/ }
//try/ add public after function

function getusercountrycode(){
    $ip = $_SERVER['REMOTE_ADDR'];
    $ch = curl_init();
    $curlConfig = array(
        CURLOPT_URL            => "https://get.geojs.io/v1/ip/country/{$ip}.json",
        CURLOPT_POST           => true,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_POSTFIELDS     => false
    );
    curl_setopt_array($ch, $curlConfig);
    $countrycode = curl_exec($ch);
    curl_close($ch);
    $countrycode = json_decode($countrycode);
    //try/ $countrycode = strtolower($countrycode);
    //try/ global $countrycode;
    return $countrycode;
}
//try/ $visitorlang = getusercountrycode();

function atv_redirect(){
    //try/ global $countrycode;
    if ( !function_exists( 'getusercountrycode' ) ) {
        return;
    }else{
    
        $geoip =  getusercountrycode();
        $visitorlang ="";
        foreach ($geoip as $infoip => $ipvalue){
            if($infoip == 'country'){
                $visitorlang =  $ipvalue;
            }
        }
        //global $countrycode;
        //$visitorlang = strtolower($countrycode);

        $atvdomain = $_SERVER['HTTP_HOST'];
        $currentpage = $_SERVER['REQUEST_URI']; 
        $listlangs = 'fr|en';
        $addlang = "/fr";
        $langsltd = "fr";
        //$visitorlang = '/'.$visitorlang;

        //if(preg_match ('/^(?:(?!'.$visitorlang.').)*$/i', $_SERVER['REQUEST_URI'])){
        //if(preg_match ("/^(?:(?![a-z]{2}).)*$/i", $_SERVER['REQUEST_URI'])){
        if(preg_match ("/^(?:(?!fr).)*$/i", $_SERVER['REQUEST_URI'])){
            wp_safe_redirect($addlang.'/'.$currentpage);
        }
    }
}
add_action('template_redirect','atv_redirect');
//try/ }$atvRew = new atvRed();
php function global-variables
1个回答
0
投票

抱歉,初学者的错误: 我测试了任何我忘记评论重复变量的解决方案。 感谢您的时间和帮助。

工作完美:

$geoip =  getusercountrycode();
$visitorlang = $geoip->country;
$visitorlang = strtolower($visitorlang);

还有那个:

$geoip =  getusercountrycode();
$visitorlang = "";
foreach ($geoip as $infoip => $ipvalue){
    if($infoip == 'country'){
            $visitorlang =  $ipvalue;
        }
        // forgot to return -> return $visitorlang;
    }
$visitorlang = strtolower($visitorlang);
© www.soinside.com 2019 - 2024. All rights reserved.