PHP:返回数组的函数:如何获得返回数组的精确副本
当php中的一个函数返回一个数组,我将它分配给一个变量,比如下面的“user”。它复制数组并将其置于空间[0]PHP:返回数组的函数:如何获得返回数组的精确副本,php,arrays,deep-copy,Php,Arrays,Deep Copy,当php中的一个函数返回一个数组,我将它分配给一个变量,比如下面的“user”。它复制数组并将其置于空间[0] $user = query("SELECT * FROM `users` WHERE id = ?", $_SESSION["id"]); Array ( [0] => Array ( [cash] => 127046553.2710 [id] => 8 [usern
$user = query("SELECT * FROM `users` WHERE id = ?", $_SESSION["id"]);
Array
(
[0] => Array
(
[cash] => 127046553.2710
[id] => 8
[username] => test
[hash] => $1$w40Hc/vl$45jJlZ/1x1rqQlEEQP7hE1
)
)
因此,我必须这样做:
if ($user[0]["cash"])
但最好是向阵列索要“现金”。在php中执行此操作的标准方法是什么
if ($user["cash"])
替换/覆盖阵列
$user = $user[0];
只需事先重新分配它 $user = $user[0] ; $user=$user[0];
这是因为您使用的函数“query” 该函数返回(我猜)所有返回行的数组。所以如果有更多的用户,你会得到
0=>user1,1=>user2
,等等
如果您确定只能获得一个用户,则可以执行以下操作:
$user = query("SELECT * FROM `users` WHERE id = ?", $_SESSION["id"]);
$user = $user[0];
$query = "SELECT * FROM `users` WHERE id = ?";
$user = query($query, $_SESSION["id"])[0];
在PHP 5.4+中,您可以执行以下操作:
$user = query("SELECT * FROM `users` WHERE id = ?", $_SESSION["id"]);
$user = $user[0];
$query = "SELECT * FROM `users` WHERE id = ?";
$user = query($query, $_SESSION["id"])[0];
注意结尾的
[0]
。用这个,希望能有所帮助
$user = mysql_fetch_array(mysql_query("SELECT * FROM `users` WHERE id = ?", $_SESSION["id"])) or die(mysql_error());
使用一些错误处理会比什么都没有帮助,对单行使用
mysql\u fetch\u array()
,然后使用$user['cash']
重新分配工作来访问您的数据,然而这是一个',它告诉您可能需要进一步或更进一步
查询函数将返回与查询匹配的完整行集,这是它应该执行的操作。您可能希望添加另一个函数,可能是query\u firstResult()
,以仅返回[0]元素。或者您可以向query()添加一个参数,如$all=true
或$singleResult=false
一个很好的经验法则是:“如果我必须做一次工作,甚至两次,那没关系,但是如果我必须做第三次,那就是修复它的时候了。”在php中,这真的是这样做的吗?在我看来,这将是一个冗余的代码。有了您提供的代码,这是我们能做的最好的了。冗余代码意味着没有被使用的代码。此代码用于实现您想要的结果,因此,它不是多余的。
mysql.*
已被弃用,不适合未来(和当前)的开发。它也不支持预先准备好的语句。是的,我知道,但出于某种目的,我们中的一些人仍在使用它,我认为对于某些例子来说是好的,因为我们更熟悉它