相关疑难解决方法(0)

为什么我不应该在PHP中使用mysql_*函数?

为什么一个人不应该使用mysql_*功能的技术原因是什么?(例如mysql_query(),mysql_connect()或mysql_real_escape_string())?

即使他们在我的网站上工作,为什么还要使用其他东西?

如果他们不在我的网站上工作,为什么我会收到错误

警告:mysql_connect():没有这样的文件或目录

php mysql database

2432
推荐指数
12
解决办法
21万
查看次数

PHP递归函数返回值

我在PHP中编写了一个递归函数来裁剪文本.裁剪后的文本将附加到末尾.非裁剪文本将以其原始状态返回.

如果文本符合最大宽度,它可以工作.但是,如果它不适合给定的宽度,函数将不会返回值,但它应该.似乎忽略了整个return语句.如果我用echo替换返回值,它会显示正确的值.

预期的结果:
-TEST ZIN
-TEST ZI
-TESTž
-TEST
-TES
-TE ......(没有在这里返回所以这将永远不会被显示)

function check_length($str, $max, $size = SIZE, $rec = false) {
    echo "FUNCTION $str ";
    list($left, , $right) = imageftbbox($size, 0, FONTURL, $str);
    if($rec == false) {
        if(($right - $left) > $max) {
            echo 'if 1<br />';
            check_length(substr($str, 0, -1), $max, $size, true);
        } else {
            echo 'else 1<br />';
            return $str;
        }
    } else {
        if(($right - $left) > ($max - 9)) {
            echo 'if 2<br />';
            check_length(substr($str, …
Run Code Online (Sandbox Code Playgroud)

php recursion return php-gd

9
推荐指数
1
解决办法
8086
查看次数

返回随机数但不是2

为什么这有时会返回2?

function pickServer(){
    $varr = rand(1,4);
    if($varr==2){
        pickServer();
    }
    return $varr;
}
Run Code Online (Sandbox Code Playgroud)

php random recursion

5
推荐指数
4
解决办法
918
查看次数

PHP函数不返回值

我有一个函数,给定一个文件名和目录路径,检查目录是否已经包含一个具有相同名称的文件,如果是这样,则返回一个修改过的文件名(通过在文件名的第一部分后附加一个数字).(get_filenames()函数是一个CodeIgniter帮助函数,它创建一个包含指定目录中所有文件名的数组.)

当我尝试打印出函数调用的返回结果时,我什么都没得到; 但是如果我在函数本身的else {}语句中打印$ new_filename,那么只需调用该函数(而不是打印它的值),它就可以了!

我需要返回函数中的值,而不是打印它,因为我实际上需要将结果分配给变量以进行进一步处理.(在下面的例子中,我刚刚打印了函数调用的结果来演示这一点.)

功能:

function avoid_conflicting_filenames($old_filename, $new_filename, $dir, $count)
{   
    $num = '';
    if ($count > 0):
        $num = $count;
    endif;

    $filename_arr = explode('.', $old_filename, -1);
    $new_filename = $filename_arr[0] . $num . '.' . $filename_arr[1];

    if (in_array($new_filename, get_filenames($dir))):      
        $count++;
        avoid_conflicting_filenames($old_filename, $new_filename, $dir, $count);
    else:
        return $new_filename;
    endif;
}
Run Code Online (Sandbox Code Playgroud)

我在哪里调用函数:

print avoid_conflicting_filenames('file.jpg', '', 'path/to/file', 0);
Run Code Online (Sandbox Code Playgroud)

这让我在过去的一天疯狂,所以任何帮助都将不胜感激!谢谢.

php recursion function return-value

2
推荐指数
1
解决办法
6138
查看次数

为什么我的递归函数不起作用?

$startDate = 20130201;
$date      = 20130505;
$aDates    = $this->getDates($startDate, $date);

public function getDates($startDate, $date) {
    $tmpStartDate = date("Ymd", strtotime($startDate.'+1 Day'));
    $tmpEndDate   = date("Ymd", strtotime($tmpStartDate.'+1 Month'));

    if($date >= $tmpStartDate && $date <= $tmpEndDate) {
        //return array('startDate' => $tmpStartDate, 'endDate' => $tmpEndDate);
    } else {
        $this->getDates($tmpEndDate, $date);
    }
}
Run Code Online (Sandbox Code Playgroud)

php recursion

2
推荐指数
1
解决办法
323
查看次数

Why doesn't this PHP recursive function return the value?


I was working on an API for ustream which returns the following array

Array
(
[results] => Array
    (
        [0] => Array
            (
                [id] => 33756327
                [userName] => sachintaware
                [title] => Mobile record
                [protected] => 
                [description] => Recorded on my Android phone.
                [createdAt] => 2013-06-03 03:29:38
                [rating] => 0.000
                [lengthInSecond] => 371.544
                [totalViews] => 5
                [codecIsForLiveHttp] => 
                [url] => http://www.ustream.tv/recorded/33756327
                [embedTag] => 
                [liveHttpUrl] => 
                [imageUrl] => Array
                    (
                        [small] => http://static-cdn2.ustream.tv/videopic/0/1/33/33756/33756327/1_14659377_33756327_120x90_b_1:2.jpg
                        [medium] => http://static-cdn2.ustream.tv/videopic/0/1/33/33756/33756327/1_14659377_33756327_320x240_b_1:2.jpg
                    )

                [sourceChannel] => Array
                    (
                        [id] …
Run Code Online (Sandbox Code Playgroud)

php arrays recursion function

2
推荐指数
1
解决办法
2794
查看次数

Php递归函数返回null,而变量有值

此函数返回NULL,而$ alias在第二次递归中具有值.在第一次调用时,它返回所需的值,但是如果第一次调用不匹配,则首先在$ alias变量中以可用的值递归所需的值,但它不返回任何内容.

public function checkAlias($fname='',$lname=''){

        if(!empty($fname)){
        $fname = mysql_real_escape_string($fname);
        }
        if(!empty($lname)){
        $lname = mysql_real_escape_string($lname);
        }

    $alias = strtolower($fname).strtolower($lname);
    $sql = "Select ALIAS from table where ALIAS = '$alias'";
    $query = mysql_query($sql);
    $row = mysql_fetch_row($query);
    $string_length = strlen($alias) - 1;
    $result_string = substr($alias,0,$string_length);

    if(!$row){
            print $alias;   // is printing value 
        return $alias;  // but here it returns null
    }else{
        $this->checkAlias($result_string);
        } 
    }
Run Code Online (Sandbox Code Playgroud)

php recursion

2
推荐指数
1
解决办法
2115
查看次数

从函数调用递归函数仅返回第一个值

我有这个递归函数调用自己直到数字达到总数.我做了这个演示来显示工作,实际上是secondFunc()conatins数据库查询.我正在从firstFunc()传递给secondFunc()的数组中保存值.问题是,当我调用第一个函数时,它只显示1个值,即1.当我在第二个函数中取消注释var_dump时,它显示所有值.我知道我做错了什么.请指出我的错误.这里的问题是什么?

function firstFunc($total){    
    $array=array();
    $num=0;
    return secondFunc($total,$num,$array);
}



function secondFunc($total,$num,$array){
    $num++;
    $array[$num]=$num;
    if($num<$total){
    secondFunc($total,$num,$array);
    }
    //var_dump($array);
    //exit();
    return $array;

}

var_dump(firstFunc(5));
Run Code Online (Sandbox Code Playgroud)

演示http://codepad.viper-7.com/Bic8ce

php recursion

2
推荐指数
1
解决办法
756
查看次数

PHP函数没有返回字符串

我构建了一个带文件名的函数,并在文件名中递增一个计数器并返回它,但是,一切都是正确的,除了返回不返回文件名.

有什么帮助吗?

我的代码:

$filename = join("", array_reverse($date));
$filename .= ".xml";
$dir = "../gigs";
$file = $dir."/".$filename;

function getNewFileName($filename, $dir) {
if (is_file("$dir/$filename")) {
    if (strpos($filename, "_") === false) {
        $filename = str_replace(".xml","_1.xml",$filename);
        getNewFileName($filename, $dir);
    }
    else {
            $pos = strpos($filename, "_");
            $counter = (int)substr($filename, $pos+1,1);
            $counter++;
            $filename = substr($filename,0, $pos)."_".$counter.".xml";
            getNewFileName($filename, $dir);
        }
    } else {
                // echoing HERE shows that the string is manipulated correctly
        return (string)$filename; // but returning here is not working
    }
}

echo getNewFileName($filename, $dir); …
Run Code Online (Sandbox Code Playgroud)

php string function

1
推荐指数
1
解决办法
1万
查看次数

递归php函数不返回结果

这是我的功能:

function loop($id){

        unset($result, $sql, $query);
        $sql = " SELECT parent_id FROM page_entries WHERE id = '$id' ";
        $query = mysql_query ( $sql )or die(mysql_error());
        $result = mysql_fetch_assoc ( $query )or die(mysql_error());
        if ( $result['parent_id'] != 0 ) {
            echo $result['parent_id']."... looping<br>";
            loop($result['parent_id']);
        } else {
            echo $result['parent_id']."... done loop";
            return $result['parent_id'];
        }

    } 

    echo loop('2');
Run Code Online (Sandbox Code Playgroud)

我正在回应parent_id进行测试.这是输出到浏览器的内容:

1 ...循环

0 ...完成循环

在我不确定发生了什么的情况下echo loop('2'),return $result['id']如果我注释掉echo函数中的行,则不会回应任何内容.我已经尝试通过改变返回来测试,但return 'foo';仍然没有.

有任何想法吗?

php function nested-loops

0
推荐指数
1
解决办法
617
查看次数

PHP中的递归函数 - 如何不返回false?

我之前从未在PHP中使用过递归,所以我对此非常新手 - 我有以下问题.WordPress函数应该返回给定子术语id的顶级术语id - 术语可以有1..n父项,因此递归函数似乎在这里很有用.

// recursive function
function return_top_level_term($term_id,$taxonomy_name) {
    $term = get_term_by('id',$term_id,$taxonomy_name);
    if($term->parent>0) {
        return_top_level_term($term->parent,$taxonomy_name);
    } else {
            // here we get the correct value
        return $term->term_id;
    }
}
Run Code Online (Sandbox Code Playgroud)

PHP确实找到了正确的term_id,但该函数总是返回false.

$my_top_level_term = return_top_level_function(423,$tax);
Run Code Online (Sandbox Code Playgroud)

三层示例,非正式表示法:

return_top_level_term(return_top_level_term(return_top_level_term(return 1;)return false;) return false;)
Run Code Online (Sandbox Code Playgroud)

我正在搜索1,但返回总是false,尽管该函数没有返回值.

当然我可以在函数上面写一个局部变量,由于范围规则可以保存值,但是我想把它写入一个库 - 有没有办法通过调用递归函数来返回这个值?

php wordpress

0
推荐指数
1
解决办法
477
查看次数

函数在PHP中返回null(返回值不为null)

我现在已经在一个功能上摸不着头脑,想知道是否有人能看到我做错了什么?我试图从函数返回一个值,但它是null,即使我知道我返回的值不是.这是我的功能:

if (!function_exists('findTopLevel')){
    function findTopLevel($id){
        $DatabaseID = $id;

        echo json_encode($DatabaseID); //correct
        $parentID = $_SESSION['items'][$DatabaseID]['ParentID'];
        echo json_encode($parentID); //correct

        if($parentID == "top"){
            echo json_encode($DatabaseID); //correct
            return $DatabaseID; //returns null
        }

        else if($parentID !== "top"){
            ini_set('memory_limit', '-1'); 
            findTopLevel($parentID);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我在这里称呼它:

if(!strpos($HiddenPositionArray, $DatabaseID)){

        $topLevel = findTopLevel($DatabaseID);
        echo json_encode($topLevel); //says: null
    }
Run Code Online (Sandbox Code Playgroud)

(当我知道它有效时,我不会回应所有这些东西.)

怎么了?

php return function

0
推荐指数
1
解决办法
800
查看次数

php递归,函数不返回任何值

我希望我的函数返回整个url,从具有给定id的节点开始,并为父项进行serching,最后一个具有parent_id = 1.我的功能几乎可以工作,回显"$ wholeUrl"; 我有我的网址,但功能不会重新调整它,我不知道wtf,请帮忙.

这是我的代码:

function getUrl($ xml,$ id){

$wholeUrl="";
$wholeUrl= getMyUrl($xml,$id,$wholeUrl);
return $wholeUrl;
Run Code Online (Sandbox Code Playgroud)

}

function getMyUrl($ xml,$ idWew,$ wholeUrl){

foreach($xml as $node) {
    $par = $node->parent_id;
    $ide = $node->id;
    $url = $node->url;
    $name = $node->name;
    settype($par,'integer');
    settype($ide,'integer');

    if($ide==$idWew){

        $wholeUrl=$url."/".$wholeUrl;

        if($par==1){
            echo"$wholeUrl ";
            return $wholeUrl;
            break;
        }else{

            getMyUrl($xml,$par,$wholeUrl);
        }
    }

}
}


print_r(getUrl($xmlcat,1877));
Run Code Online (Sandbox Code Playgroud)

$ xmlcat是具有以下结构的平面数组:

SimpleXMLElement Object ( [id] => 1876 [parent_id] => 1 [name] => blablabla, bla, bla [url] => bla-bla-bla-bla ) 
Run Code Online (Sandbox Code Playgroud)

php recursion return

-1
推荐指数
1
解决办法
1714
查看次数