외부 변수에 대한 내 함수 액세스 허용
밖에 어레이가 있습니다.
$myArr = array();
외부 어레이에 대한 기능 액세스를 제공하여 어레이에 가치를 더하고 싶다.
function someFuntion(){
$myVal = //some processing here to determine value of $myVal
$myArr[] = $myVal;
}
함수의 범위를 변수에 올바르게 지정하려면 어떻게 해야 합니까?
기본적으로 함수 내부에 있으면 외부 변수에 액세스할 수 없습니다.
함수가 외부 변수에 액세스할 수 있도록 하려면 다음과 같이 선언해야 합니다.global
, 함수 내부:
function someFuntion(){
global $myArr;
$myVal = //some processing here to determine value of $myVal
$myArr[] = $myVal;
}
그러나 글로벌 변수를 사용하는 것은 좋은 방법이 아닙니다.이것으로 함수는 더 이상 독립적이지 않습니다.
더 좋은 방법은 함수가 결과를 반환하도록 하는 것입니다.
function someFuntion(){
$myArr = array(); // At first, you have an empty array
$myVal = //some processing here to determine value of $myVal
$myArr[] = $myVal; // Put that $myVal into the array
return $myArr;
}
그리고 함수를 다음과 같이 호출합니다.
$result = someFunction();
함수는 파라미터를 취득할 수도 있고 참조에 의해 전달된 파라미터에서도 동작할 수 있습니다.
function someFuntion(array & $myArr){
$myVal = //some processing here to determine value of $myVal
$myArr[] = $myVal; // Put that $myVal into the array
}
그런 다음 함수를 다음과 같이 호출합니다.
$myArr = array( ... );
someFunction($myArr); // The function will receive $myArr, and modify it
이것으로:
- 함수가 외부 배열을 매개 변수로 수신했습니다.
- 참조로 전달되는 대로 수정할 수 있습니다.
- 또한 글로벌 변수를 사용하는 것보다 더 좋습니다. 함수는 외부 코드와는 무관한 단위입니다.
상세한 것에 대하여는, PHP 메뉴얼의 「기능」섹션, 특히 다음의 서브섹션을 참조해 주세요.
$foo = 42;
$bar = function($x = 0) use ($foo){
return $x + $foo;
};
var_dump($bar(10)); // int(52)
업데이트: 화살표 기능을 지원하게 되었습니다만, 화살표 기능을 사용하여 답변을 작성하신 분에게 알려드리겠습니다.
Global $myArr;
$myArr = array();
function someFuntion(){
global $myArr;
$myVal = //some processing here to determine value of $myVal
$myArr[] = $myVal;
}
주의하세요, 사람들은 일반적으로 지구촌 대회에는 단점이 있기 때문에 멀리합니다.
이거 드셔보세요
function someFuntion($myArr){
$myVal = //some processing here to determine value of $myVal
$myArr[] = $myVal;
return $myArr;
}
$myArr = someFunction($myArr);
그럼 글로벌에 의존하지 않아도 되겠네요
$myArr = array();
function someFuntion(array $myArr) {
$myVal = //some processing here to determine value of $myVal
$myArr[] = $myVal;
return $myArr;
}
$myArr = someFunction($myArr);
목표를 달성하기 위한 유일한 방법은 글로벌 변수를 사용하는 것입니다.
이를 실현하기 위해서는global $myArr;
기능을 시작할 때까지 기다립니다.그러나 글로벌 변수를 사용하는 것은 대부분의 경우 잘못된 생각이며 피할 수 있습니다.
보다 나은 방법은 어레이를 기능에 대한 인수로서 전달하는 것입니다.
function someFuntion($arr){
$myVal = //some processing here to determine value of $myVal
$arr[] = $myVal;
return $arr;
}
$myArr = someFunction($myArr);
그것은 정말로 일의 올바른 순서에 관한 것이다.
<?php
/*In general(the rule can be broken) code is interpreted left to right
top to bottom.
If you want a function to be able to use the values you input,
write the function first. This means the function should be above where
it is requested in the code. Add some parameters($param). Note it does
not need to be called $param, I use $value in the example. This can be
multiple $vars going from left to right i.e($param_1,$param_2), or be an
array(), or a mix. Just remember left to right. Left values must exist
before right values.*/
//Example function here
function foo($value){
return $value[0] + 1;
}
//Optional way to create array
//$value[0] = 0;
$value = array(0);
$limit = 10;
while($value[0] < $limit){
//Request the function here as many times as you want
echo $value[0] = foo($value);
echo "<br>";
}
//Clean up afterwards
unset($value,$limit);
?>
언급URL : https://stackoverflow.com/questions/2531221/giving-my-function-access-to-outside-variable
'source' 카테고리의 다른 글
MySQL 한 테이블에서 모든 열을 선택하고 다른 테이블에서 일부 열을 선택합니다. (0) | 2023.01.02 |
---|---|
PHP와 함께 컬을 사용하여 파일을 업로드하는 방법 (0) | 2023.01.02 |
정적 필드가 가비지 수집용으로 열려 있습니까? (0) | 2023.01.02 |
CURRENT_TIMESTamp(밀리초 단위) (0) | 2023.01.02 |
자노드를 취득하는 최선의 방법 (0) | 2023.01.02 |