为了账号安全,请及时绑定邮箱和手机立即绑定

PHP:无法在父函数中使用函数变量

PHP:无法在父函数中使用函数变量

PHP
紫衣仙女 2023-08-19 16:51:39
我使用两个函数。函数1(“setImageCopyrightsPost”)将一些信息写入数组(“img_copyrights”),然后调用函数2(“getPostImageThumbnailByID”),然后将函数2中设置的变量(“img_thumbnail”)写入数组以及。但最后一步不起作用。function setImageCopyrightsPost($db_link_backend, $img){    global $img_copyrights;    global $img_thumbnail;    $img_copyrights["post-". $img['id']]['title'] = $img['title'];    $img_copyrights["post-". $img['id']]['copyright'] = $img['copyright'];    getPostImageThumbnailByID($img['id']);    $img_copyrights["post-". $img['id']]['url'] = IMG_URL_PATH . $img_thumbnail;}function getPostImageThumbnailByID($img_id){    global $img_thumbnail;    unset($img_thumbnail);    $sql_get_img_meta_by_id = "SELECT ...'";    // some SQL-stuff    if ($num_rows_get_img_meta_by_id == 1 && mysqli_errno($db_link_backend) == 0) {        $row_get_img_meta_by_id = mysqli_fetch_array($result_get_img_meta_by_id);        // get data from image meta        unset($preg_matches);        preg_match("/(\"thumbnail\")(.+?)(\"file\")(.+?)(\")(.+?)(\")(.+?)(\"width\";i:)(.+?)(;)(.+?)(\"height\";i:)(.+?)(;)/m", $row_get_img_meta_by_id['meta_value'], $preg_matches);        // set name        $img_thumbnail = $preg_matches[6];        echo $img_thumbnail;        return true;    }    }我遗漏了 sql-stuff,因为我知道它正在工作,因为它echo $img_thumbnail正在工作 - 变量正确打印在页面上。但是当我使用时var_dump($img_copyrights),只设置了“标题”和“版权”,“url”为“NULL”。看来,函数 1 不能使用函数 2 中设置的变量 $img_thumbnail。是我犯了错误还是正常现象?
查看完整描述

1 回答

?
拉风的咖菲猫

TA贡献1995条经验 获得超2个赞

您不能像在函数中那样定义全局变量,它们必须首先在全局范围内定义。正确的方法是从第二个函数返回并在第一个函数中分配返回值:


function setImageCopyrightsPost($db_link_backend, $img)

{

    //remove

    //global $img_thumbnail;


    //code


    $img_thumbnail = getPostImageThumbnailByID($img['id']);  // assign the return


    $img_copyrights["post-". $img['id']]['url'] = IMG_URL_PATH . $img_thumbnail;


}


function getPostImageThumbnailByID($img_id)

{

        //remove

        //global $img_thumbnail;

        //unset($img_thumbnail);


        //code


        $img_thumbnail = $preg_matches[6];


        return $img_thumbnail;  // return the variable


}

一种黑客方法是将所有实例替换为$img_thumbnail,$GLOBALS['img_thumbnail']但不要这样做。


查看完整回答
反对 回复 2023-08-19
  • 1 回答
  • 0 关注
  • 64 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信