将值的一个关联数组中的值分配给另一个数组

时间:2009-03-31 17:54:24

标签: php declaration variable-assignment associative-array

我有一个变量$params,它从数据库中获取数据:

$params = mssql_fetch_array($result)

据我所知,它是关联数组。我想要另一个数组$tempParams来保存这个数组的值。我可以使用以下语句分配它:

$tempParams = $params

另外,我是否需要一个语句来声明并为$ tempParams赋值,还是可以将它们分开?

我想问的另一个问题是以下陈述是正确的; 虽然$ tempParams包含值;

$params['column1'] = $tempParams['newColumns']

5 个答案:

答案 0 :(得分:5)

是的,

$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' 

答案 1 :(得分:1)

至于您的数组是否具有关联性,请阅读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>';

答案 2 :(得分:1)

是的,=运算符将完全复制数组。

你可以自己检查:

// 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成为一个没有元素的数组。

答案 3 :(得分:1)

对于数组,数字和关联,=运算符将复制变量。两个变量完全相互独立。但是,在处理对象时,=运算符会创建对象的引用,并且两个变量都指向完全相同的对象。

答案 4 :(得分:0)

是的,你可以,但如果你正在处理对象(取决于你正在使用的PHP版本),这可能会导致某种别名。

为什么要复制数组?你不能使用相同的原始变量($ params)?