如何将php数组的元素相乘

时间:2010-11-17 19:35:44

标签: php arrays loops multiplying

我正在尝试将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.";

?>

3 个答案:

答案 0 :(得分:6)

您的代码只需要从

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

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

答案 1 :(得分:1)

您的错误在

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

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

像这样:

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

答案 2 :(得分:1)

取决于你想要翻译的“深度”

  

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

     

更深 - 将$放在变量前面,将循环更改为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;
}

他们每次都会跑,但如果你在循环中做那些,你就不会真正使用php。对于一个更极端的例子,使用“python”标记发布带有大量while的代码并询问是否可以简化它。

foreach循环和echo是惯用的php,而循环和打印只能起作用。