문제

변수가 있습니다 $params 데이터베이스에서 데이터를 가져옵니다.

$params = mssql_fetch_array($result)

내가 아는 한, 그것은 연관 배열입니다. 나는 다른 배열을 원한다 $tempParams 이 배열의 값을 보유합니다. 다음 진술을 사용하여 할당 할 수 있습니까?

$tempParams = $params

또한 $ tempparams에 값을 선언하고 할당하려면 하나의 단일 명령문이 필요합니까, 아니면 분리 될 수 있습니까?

내가 묻고 싶은 한 가지 질문은 다음 진술이 맞다는 것입니다. $ tempparams에는 값이 포함되어 있습니다.

$params['column1'] = $tempParams['newColumns']
도움이 되었습니까?

해결책

예,

$tempParams = $params; 

모든 값을 $ params에서 $ tempparams로 복사합니다.

$params['foo'] = 'bar';
echo $tempParams['foo']; //nothing
$tempParams = $params;
echo $tempParams['foo']; //'bar'
$params['foo'] = 'hai';
echo $tempParams['foo']; //still: 'bar' 

다른 팁

배열이 연관적인지 여부에 따라 문서를 읽으십시오. mysql_fetch_array ()

과제가 진행되는 한 실제로 한 명령에 넣을 수 있습니다.

$tempParams = $params = mysql_fetch_array( $result, MYSQL_ASSOC );

이 간단한 테스트는 이와 같은 과제를 할 때 두 변수 모두 참조가 아닌 별도의 사본임을 보여줍니다.

$a = $b = array( 1, 2, 3 );

$b[1] = 'x';

echo '<pre>';
print_r( $a );
print_r( $b );
echo '</pre>';

예, = 연산자는 배열을 정확하게 복사합니다.

직접 확인할 수 있습니다.

// get the $params from DB
print_r ($params); // will output array contents
$tempParams = $params;
print_r ($tempParams); // must be the same as above

PHP에는 "선언"변수와 같은 것은 없지만 $ tempparams가 할당하기 전에 어딘가에 어딘가에 있다고 말하고 싶다면 다음과 같이 할 수 있습니다.

$tempParams = array ();

이것은 $ tempparams를 내부에 요소가없는 배열로 만듭니다.

배열, 숫자 및 연관성의 경우 = 연산자는 변수의 사본을 만듭니다. 그리고 두 변수 모두 완전히 독립적입니다. 그러나 객체를 다룰 때 = 연산자는 객체에 대한 참조를 생성하고 두 변수 모두 동일한 객체를 가리 킵니다.

예, 할 수는 있지만 객체를 다루는 경우 (사용중인 PHP 버전에 따라) 어떤 종류의 별칭이 발생할 수 있습니다.

배열을 복사하려는 이유는 무엇입니까? 동일한 원본 변수 ($ params)에서 작업 할 수 없습니까?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top