0
내 PHP 버전은 5.2.17 내가참조 문제 자체 제작 확장 기능
PHP_FUNCTION(GetProductFamily)
{
zval *productFamily;
int ret;
if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z",&productFamily) == FAILURE)
{
return;
}
productFamily->value.lval = 1;
RETURN_LONG(WS_OK);
}
는 $ productFamily이 함수에 전달되는 PHP 함수를 만들어, 그 값이 변경됩니다 . 나는이 기능을하지만
<?php
$productFamily = 0;
call_user_func_array('GetProductFamily', array(&$productFamily));
echo $productFamily; //return 0, should be 1 !
?>
<?php
$productFamily = 0;
call_user_func_array('GetProductFamily', array($productFamily));
echo $productFamily; //return 1 this time...
?>
전화를 call_user_func_array를 사용할 때
<?php
$productFamily=0;
GetProductFamily(&$productFamily);
echo $productFamily;
?>
return 1;
or without &
<?php
$productFamily=0;
GetProductFamily($productFamily);
echo $productFamily;
?>
still return 1.
하지만 상황이 이상한 가지고 : 난 그냥이 함수를 호출하는 경우 다음 PHP에서
, 그것은 꽤 괜찮습니다
GetProductFamily가 $ productFamily를 변경할 수 있으므로 ref로 전달해야한다고 가정합니다. 여기에 erece가 있지만 알 수 있듯이 &은 작동하지 않습니다. PHP에서 제공하는 기본 기능을 사용할 때 &이 필요하기 때문에 저는 혼란 스럽습니다.
왜 ?? 단지 내부 기능에