>  기사  >  백엔드 개발  >  PHP의 재귀 메서드에서 값을 반환하는 데 문제가 있습니다.

PHP의 재귀 메서드에서 값을 반환하는 데 문제가 있습니다.

WBOY
WBOY원래의
2016-10-20 10:08:52877검색
<code><?php
$array = array(
    0 => array(
      '1a' => '',
      '3a' => '',
      '6a' => array(
        '6a1' => '',
        '6a2' => '',
        '6a3' => array(
          '6a31' => '',
          '6a33' => '',
          '6a34' => '1',
          ),
        ),
      ),
    1 => array(
      '3b' => '',
      '4b' => array(
        '4b1' => '',
        '4b2' => '',
        ),
      '6b' => '',
      )
    );

function search_val($key, $arr) {
  $v = '';
  foreach ($arr as $ks => $vs) {
    if($ks != $key && is_array($vs)) {
      search_val($key, $vs);
    }else if($ks != $key && is_string($vs)) {
      continue;
    }else if($ks == $key) {
      $v = $vs;
      break;
    }
  }
  return $v; 
  //var_dump($v);exit; //这里是有值的 为1
  //echo $v;  //测试这样可以直接输出
}
$va = search_val('6a34', $array);
var_dump($va); //$va始终为空 
</code>

이 메소드의 의미는 첨자 $key에 대해 val에 해당하는 값을 얻는 것입니다. 메소드 끝에 return $v를 넣은 다음 이 return의 결과를 value $va. 이 값은 항상 비어 있는데 메소드 끝에 $v를 인쇄하면 값이 나오는 이유는 무엇입니까? 변수 범위에 문제가 있습니까? 아니면 내 코드의 불규칙성으로 인해 발생합니까? 해결

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.