是否有可能将这两行写入一行?

时间:2011-04-27 22:44:31

标签: php

$fail_row = mysql_fetch_array($sql_fail_check);
$tries = $time_row['tries'];

我正在读它,它可以节省内存来做内联/少行。因为我只需要从那个MySql数组中获取计数,我能不能以某种方式将它变成一行?

4 个答案:

答案 0 :(得分:5)

忘记这条建议 - 这完全是胡说八道。

重新更新:advice you quote建议压缩

$description = strip_tags($_POST['description']);
echo $description;

进入

echo strip_tags($_POST['description']);

这对非常大数据量有意义,因为将值存储在变量($description)中的步骤会使存储description所需的内存量翻倍,这可能导致内存限制问题。

但是,在你的情况下,

  • 没有优雅的方法来直接处理来自函数调用的数组中的元素(如$tries = mysql_fetch_array($sql_fail_check)["tries"];) - 从语法上讲它是不可能的。

  • tries可能永远不会大到足以让这种优化产生任何差异。

请记住:仅在必要时进行优化,或者如果您知道自己将要处理大量数据。除非是这种情况,否则代码可读性始终是第一位的。

答案 1 :(得分:3)

实际上,如果我理解这一点,那么:执行$a = 1; $b = $a;将不会使用两倍的内存,因为这只意味着$a$b都指向同一地址存储器中。

只有在您现在更改$a$b时才会分配新空间。

答案 2 :(得分:2)

你可以这样做:

$tries = mysql_fetch_object($sql_fail_check)->tries;

答案 3 :(得分:1)

是的,你可以组合两条线。鉴于tries是第一个SELECT ed列,您可以执行以下操作:

list($tries) = mysql_fetch_num($result);

有关阵列解除引用的更多信息,请参阅this answer(这就是他们称之为您尝试做的事情)。

PS:使用PDO的另一个原因,你只需写下:

$tries = $pdo->query('SELECT tries FROM table')->fetchColumn(0);