2011-10-06 3 views
3

PHP에서 알려지지 않은 변수를 읽으려면 다음과 같은 코드를 자주 사용하십시오.

$bar = isset($_GET['foo']['bar']) ? $_GET['foo']['bar'] : NULL; 

변수 이름을 두 번 쓰고 싶지 않습니다. 그것은 단지보기 흉하고 일상적인 작업에 너무 길다.

더 나은 솔루션을 알고 있습니까? @ 연산자를 사용하거나 알림을 전혀 표시하지 않는 것은 선택 사항이 아닙니다 (나쁜 습관, 느림).

그러나 이것은 이름/경로와 함께 새로운 원치 않는 변수를 자동 생성합니다. var_dump($_GET)가 다음과 같이 인쇄됩니다.

array(1) { 
    ["foo"]=> 
    array(1) { 
    ["bar"]=> 
    NULL 
    } 
} 
+0

PHP는 아무 것도 없다고 생각합니다. 여기에 대해 많은 질문이 있습니다. – Dani

+0

나는 그들을 찾으려고했지만 무엇을 검색해야할지 몰랐다. – flori

+0

다른 옵션은 없습니다. 나쁜 연습과 느린 신화로 인해 PHP 전용 구문을 사용하고 싶지 않다면 귀찮은 구문 복제본을 가지고 살아야 할 것입니다. – mario

답변

0

마지막으로 PHP7은 해결책을 제시합니다. 예!coalesce operator.

$bar = $_GET['foo']['bar'] ?? NULL; 

?? 전에 값이 존재하고 그 하나를 반환 NULL 아니다, 그렇지 않은 경우 ?? 뒤에서 대체 값을 취합니다. 나는 그것을 좋아한다!

2

을 어떤 경우에 당신은 추출물 ($ _ GET)를 사용할 수 있으며, • var_dump($_GET) 인쇄 것

<?php 

/* Suppose that $var_array is an array returned from 
    wddx_deserialize */ 

$size = "large"; 
$var_array = array("color" => "blue", 
        "size" => "medium", 
        "shape" => "sphere"); 
extract($var_array, EXTR_PREFIX_SAME, "wddx"); 

echo "$color, $size, $shape, $wddx_size\n"; 

?> 
+0

크리 에이 티브, 그리고 적어도 것들을 깔끔하게 보입니다. – eykanal

0

사용 : "eval (foo, bar") PHP 설명서에서 eval을 참조하십시오.

+0

'eval ('return $ foo')'를 의미합니까? – flori

0

함수를 다시 디자인하는 또 다른 방법은 모든 키 집합을 이름으로 배열에 추가 한 다음 in_array() 함수를 사용하여 간단히 확인하는 재귀 함수를 만드는 것입니다. 발견되면 반환 값.

+0

나는 그것을 시도했지만 너무 좋아하지 않았다. 느리고 전체 변수 이름을 더 이상 검색 할 수 없습니다. 어쩌면 코드 인식 기능이있는 IDE가 너무 짜증나게 될까요? – flori

관련 문제