我有一个可变$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() <文档/ p>

至于转让的话,你实际上可以把它放在一个语句

$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