php递归函数返回false

时间:2015-07-17 12:48:51

标签: php

exports.saveimage = function(req, res, next) {
    var imgPath = '/Users/Documents/logo.png';
    var logoimage = new LogoImage(req.body);

    logoimage.Photo.data = fs.readFileSync(imgPath);
    logoimage.Photo.contentType = 'image/png';

    logoimage.save(function (err, logoimage) {
        if (err) {
            console.log(err);
            return res.status(400).send({
                message:'unable to save'
            });
        } else {
            res.json(logoimage);
            console.error('saved img to mongo');
        }
    });
};

我有这个递归函数,我不能让它返回正确的值...它只返回false。

2 个答案:

答案 0 :(得分:1)

嘿,你叫你的功能。当你打电话给你的功能时,你会一次又一次地打电话。但是当它返回另一个值而不是false时,它比一次执行更深。

你需要这样的东西:

function recursiveSearchKeyByVal($array, $needle) {
  $k = false;
  foreach($array as $key => $val) {
    if( is_array($val) ) {
        $k = array_search($needle, $val);            
        if( $k ) {               
            #var_dump($k);   //<-- string(8) "12345678"      TRUE
            return $k;      //<-- bool(false)               FALSE ?????????
        } else {
           $k = recursiveSearchKeyByVal($val, $needle);
        }
    }
  }
  return $k;
}

答案 1 :(得分:0)

这是有效的,如果值位于数组的第一个深处,我添加了支持,就像你可以在任何地方找到它一样。

function recursiveSearchKeyByVal($array, $needle) {
  $k = false;
  foreach($array as $key => $val) {
    if( is_array($val) ) {
        $k = array_search($needle, $val);            
        if( !$k ) {
           $k = recursiveSearchKeyByVal($val, $needle);
        }
    } elseif ($needle == $val) {
        $k = $key;
    }
  }
  return $k;
}

在此测试:demo