하나의 연관 배열에서 값을 다른 배열로 할당
-
22-08-2019 - |
문제
변수가 있습니다 $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)에서 작업 할 수 없습니까?