douchenchepan6465 2016-09-26 13:27
浏览 52

php未定义变量使用php函数[重复]

Getting undefined variable error when i put string replace code in function

Bellow code show undefined for dataemail, AND $datafname but SESSION username is okay, also when i try to echo this dataemail, AND $datafname it show logged user email and fullname

<?php
function mentioned($input_str){
    $input_str = strip_tags($input_str);
    $input_str = htmlentities($input_str);

    $wordInString = array('@user@','@email@','@fname@');
    $replaceInString = array($_SESSION['username'], $dataemail, $datafname); // the error is from here
    return str_replace($wordInString, $replaceInString, $input_str);
}
$match_user = mentioned($info_body);
?>

This bellow code work well without error but i need to code it in a function so i can reuse it anywhere without coding it again

<?php
            $string = $info_body;
            $wordInString = array('@user@','@email@','@fname@');
            $replaceInString = array($_SESSION['username'] ,$dataemail,$datafname);
            $match_user = str_replace($wordInString, $replaceInString, $string);
echo $match_user;
?>
</div>
  • 写回答

1条回答 默认 最新

  • duan4739 2016-09-26 13:29
    关注

    By default, PHP functions don't have access to global variables, so your function do not see the two "data" variables.

    The best solution would be to pass them as argument:

    function mentioned($input_str, $dataemail, $datafname){
        $input_str = strip_tags($input_str);
        $input_str = htmlentities($input_str);
    
        $wordInString = array('@user@','@email@','@fname@');
        $replaceInString = array($_SESSION['username'], $dataemail, $datafname); // the error is from here
        return str_replace($wordInString, $replaceInString, $input_str);
    }
    $match_user = mentioned($info_body, $dataemail, $datafname);
    

    Another solution would be to declare them as global on top of the function, but that would make your code less re-usable and more difficult to maintain, so use with caution:

    function mentioned($input_str){
        global $dataemail;
        global $datafname;
        ...
    
    评论

报告相同问题?

悬赏问题

  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 关于大棚监测的pcb板设计
  • ¥15 stm32开发clion时遇到的编译问题
  • ¥15 lna设计 源简并电感型共源放大器
  • ¥15 如何用Labview在myRIO上做LCD显示?(语言-开发语言)
  • ¥15 Vue3地图和异步函数使用