Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP:返回数组的函数:如何获得返回数组的精确副本_Php_Arrays_Deep Copy - Fatal编程技术网

PHP:返回数组的函数:如何获得返回数组的精确副本

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

当php中的一个函数返回一个数组,我将它分配给一个变量,比如下面的“user”。它复制数组并将其置于空间[0]

$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.*
已被弃用,不适合未来(和当前)的开发。它也不支持预先准备好的语句。是的,我知道,但出于某种目的,我们中的一些人仍在使用它,我认为对于某些例子来说是好的,因为我们更熟悉它