【问题标题】:Convert php loop to JavaScript将 php 循环转换为 JavaScript
【发布时间】:2012-11-16 20:29:56
【问题描述】:

我想将以下代码从 php 转换为 JavaScript:

$price = '270';

$allowed_sms_prices = array(
 5,7,10,15,20,25,30,35,39,40,
 45,49,50,55,59,60,69,75,79,85,
 89,95,100,125,150,175,200,225,250,275,
 300,310,315,320,325,330,335,340,345,350,
 355,360,365,370,375,380,385,390,395,400,
 405,410,415,420,425,430,435,440,445,450,
 455,460,465,470,475,480,485,490,495,500
);

while( ! in_array( $price, $allowed_sms_prices ) )
{
     $price = $price + 1;
}
echo $price;

【问题讨论】:

  • 如果你有$price = 501; 那将是一个无限循环:)

标签: php jquery arrays loops while-loop


【解决方案1】:

这是一个等效的javascript:

$price = 270;

$allowed_sms_prices = Array(
 5,7,10,15,20,25,30,35,39,40,
 45,49,50,55,59,60,69,75,79,85,
 89,95,100,125,150,175,200,225,250,275,
 300,310,315,320,325,330,335,340,345,350,
 355,360,365,370,375,380,385,390,395,400,
 405,410,415,420,425,430,435,440,445,450,
 455,460,465,470,475,480,485,490,495,500
);

while( $allowed_sms_prices.indexOf($price) == -1 )
{
     $price = $price + 1;
}
alert($price);

看看这有多容易?

您的逻辑仍然存在问题,即循环没有可靠的退出条件。例如,如果$price 的值大于500,则循环将无限期地运行。您可以采取多种方法来纠正此问题,其中之一是检查该值是否不大于数组中的最大值。

【讨论】:

  • @phpisuber01: $ 可以是变量名的一部分,如果你愿意的话。
  • @phpisuber01 我只是想说明所需的更改很少。
  • @azizpunjani 这将是对他的逻辑的更正。我只是在用另一种语言复制他的逻辑。
  • @azizpunjani 但是,我已经编辑了我的答案以提及这个问题。
  • @Asad:我不介意:P,这只是作为旁注,OP 可能会感兴趣。不过,我唯一不能忍受的是(ab)使用数组构造函数。我知道您希望代码尽可能地类似于 PHP 代码,但 PHP 5.4 现在也支持 [] 数组表示法。它还支持 lambda 函数和 json_decode 默认解码为对象。看起来他们好像在挑选 JS 的好部分 :)
猜你喜欢
  • 2018-05-10
  • 1970-01-01
  • 2010-11-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-18
  • 2021-12-30
相关资源
最近更新 更多