【问题标题】:How to multiply elements of php array如何将php数组的元素相乘
【发布时间】:2010-11-17 19:35:44
【问题描述】:

我正在尝试将 javascript 函数转换为 php,但我的数组存在一些问题。我需要遍历数组元素,将它们全部乘以一定数量,但它不会改变值。很确定这是因为我的语法 $coordinates_p[i][0] *= $scale;不正确,但我不确定它应该是什么!

测试代码:

<?php

print "Starting.<br/>";

$scale = 100;

$coordinates_p = array();

$i = 0;
$x_coordinate = 1;
$y_coordinate = 2;
while ($i <= 1) {
    $coordinates_p[$i] = array(0 => $x_coordinate, 1 => $y_coordinate);
    $x_coordinate += 1;
    $y_coordinate += 2;
    $i++;
}

print "Unscaled: ";
print_r ($coordinates_p);
print "<br/>";

$i = 0;
while (isset($coordinates_p[i])) {
    $coordinates_p[i][0] *= $scale;
    $coordinates_p[i][1] *= $scale;
    $i++;
}

print "Scaled: ";
print_r ($coordinates_p);
print "<br/>";

print "Finished.";

?>

【问题讨论】:

    标签: php arrays loops multiplication


    【解决方案1】:

    你的代码只需要改变

    $coordinates_p[i][0] *= $scale;
    $coordinates_p[i][1] *= $scale;
    

    $coordinates_p[$i][0] *= $scale;
    $coordinates_p[$i][1] *= $scale;
    

    【讨论】:

    • 继续错过这些!但不幸的是它仍然不起作用。
    • @Mike 那么你也错过了这两个上面的 isset 中的那个。始终在开发服务器上启用 error_reporting(-1) 并确保在 php.ini 中设置 display_errors 指令,PHP 会告诉你这些事情。
    • 我的错,还有一个我错过了。现在工作正常!
    • @Gordon 谢谢你的提示,我不知道。
    【解决方案2】:

    你的错误在

    while (isset($coordinates_p[i])) {
        $coordinates_p[i][0] *= $scale;
        $coordinates_p[i][1] *= $scale;
        $i++;
    }
    

    它应该使用 $i 而不是 i。

    像这样:

    while (isset($coordinates_p[$i])) {
        $coordinates_p[$i][0] *= $scale;
        $coordinates_p[$i][1] *= $scale;
        $i++;
    }
    

    【讨论】:

    • 好的,谢谢。这将教我从 javascript 中剪切和粘贴!
    • jon_darkstar 在这里的回答也是一个很好的说明——我只是在修复你的代码。使用 foreach 方法将是“更好”的 php。即使是 for 循环(有界)也比潜在的无限 while 循环更好。
    【解决方案3】:

    取决于您要翻译的“深度”程度

    浅 - 在每个变量前面放一个 $

    更深入 - 将 $ 放在变量前面,将那些 while 循环更改为 foreach,将 print 更改为 echo

    //before
    $i = 0;
    while (isset($coordinates_p[i])) {
        $coordinates_p[i][0] *= $scale;
        $coordinates_p[i][1] *= $scale;
        $i++;
    }
    
    //Better PHP form
    foreach($coordinates_p as $current)
    {
       $current[0] *= $scale;
       $current[1] *= $scale;
    }
    

    它们每个都会运行,但如果你执行那些 while 循环,你并没有真正使用 php。举个更极端的例子,发布包含大量 while 循环的代码并使用“python”标签并询问是否可以简化。

    foreach 循环和 echo 是惯用的 php,while 循环和打印仅适用。

    【讨论】:

    • 好的,谢谢。从来没有真正正确地学习过任何编程语言,只是涉足并尝试获得我需要的最终结果。不过,可能值得花一些时间在这上面,我最近似乎在做越来越多的事情。感谢您的提示!
    猜你喜欢
    • 2021-08-31
    • 1970-01-01
    • 2019-02-28
    • 1970-01-01
    • 1970-01-01
    • 2021-12-10
    • 2020-07-10
    • 1970-01-01
    相关资源
    最近更新 更多