我正在尝试将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.";
?>
答案 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,而循环和打印只能起作用。