개발 Q&A

제목 php익명함수 관련 질문!
글쓴이 작성시각 2016/03/16 18:39:50
댓글 : 3 추천 : 0 스크랩 : 0 조회수 : 11183   RSS

현 코드

$fn = function () use ($type, $row, $limit) {
				if ($type == "<") return $row['m_order'] - $limit;
				else return $row['m_order'] + $limit;
			};
		
			$this->db->where('m_no', $no);
			$this->db->update('rsv_main', array(
					'm_order' => $fn(),
			));

개선하고 싶은 어떤 코드 (동작하지 않음 ㅠ_ㅠ)


		
			$this->db->where('m_no', $no);
			$this->db->update('rsv_main', array(
					'm_order' => function () use ($type, $row, $limit) {
				if ($type == "<") return $row['m_order'] - $limit;
				else return $row['m_order'] + $limit;
			}(),
			));

--------------------------------------------------------------------------------------------------

자바8 구경하면서 람다 표현식이 있길래 php도 람다가 있나 보다가 보니 람다도 있더군요..

그래서 아래와같이 바로 쓸 수 있게 하고 싶은데 ... 현코드는 정상 동작 하고요.

아래코드는 에러~ ㅠ_ㅠ 뭔가 방법이 있을거같은데......

 다음글 웅파님의 책 소스관련한 질문입니다 (5)
 이전글 RestFul에 관한 질문입니다. (4)

댓글

한대승(불의회상) / 2016/03/17 08:01:23 / 추천 0

사용하신 문법에 오류가 있군요.

사용하고 계시는 PHP 버전이 7.0 이라면 아래 처럼 하시면 됩니다.

$this->db->where('m_no', $no);
$this->db->update('rsv_main', array(
	'm_order' => (function () use ($type, $row, $limit) {
		if ($type == "<") return $row['m_order'] - $limit;
		else return $row['m_order'] + $limit;
	})()
));

5.6 이하 버젼 이라면 익명함수를 변수에 할당 한 후 사용하면 됩니다.

/ 2016/03/17 08:49:41 / 추천 0

@불의회상

오오~~! 역시 방법이 있군요.. 문법을 몰라서요 ㅠ_ㅠ 어제 php7 유투브 동영상 보는데 새로운 문법이 참 많네요 ...

어제 하루종일 찾다 못찾았는데 ... 감사합니다 ^^

$this->db->where('m_no', $no);
$this->db->update('rsv_main', array(
		'm_order' => (function () use ($type, $row, $limit) {
		return ($type == "<") ? $row['m_order'] - $limit : $row['m_order'] + $limit;
	})()
));

 

kaido / 2016/03/17 09:09:34 / 추천 0

오늘도 한수 배우고 갑니다 ㅎ

문법 체계가 스크립트 틱 하네요.