【问题标题】:Separating Variables Inside an Array [closed]分隔数组内的变量[关闭]
【发布时间】:2013-06-26 02:38:37
【问题描述】:

嘿,我有一个数组,我需要分隔每个值,所以它会是这样的

$arry = array(a,b,c,d,e,f)
$point1 = (SELECT distance FROM Table WHERE Origin = a AND Destination = b);
$point2 = (SELECT distance FROM Table WHERE Origin = b AND Destination = c);
$point3 = (SELECT distance FROM Table WHERE Origin = c AND Destination = d);
$point4 = (SELECT distance FROM Table WHERE Origin = d AND Destination = e);
$point5 = (SELECT distance FROM Table WHERE Origin = e AND Destination = f);
$point6 = (SELECT distance FROM Table WHERE Origin = f AND Destination = g);
$point7 = (SELECT distance FROM Table WHERE Origin = g AND Destination = f);

$total_trav = $point1+$point2+$point3+$point4+$point5+$point6+$point7

【问题讨论】:

  • 你有什么问题?
  • 我的问题是数组是随机的,上面我只是按顺序排列它有时数组会是 (a,v,d,z,l,m) --> 我需要排序到 a->v、v->d、d->z 等。那是我的问题
  • 你仍然不清楚你所说的随机是什么意思......它是如何随机的,它需要如何组织才能在你的查询中工作???如果您需要帮助,您需要更清楚地知道您需要什么,我建议在您的问题中添加您实际需要的内容,无论随机性如何,您在对我的回答的评论中输入的内容向我展示了即使字母你选的是随机的,顺序还是一样的
  • 让我知道我所做的是否对您有帮助,或者我是否完全误解了您的需求......
  • thankx 我需要的只是订购那个随机字母。

标签: php mysql


【解决方案1】:

简单就用 list();

list($point1,$point2,$point3,$point4,$point5) = $arry;

然后像这样进行查询....

$sql = "SELECT SUM(distance) FROM table WHERE (origin='$point1' AND destination='$point2') OR (origin='$point2' AND destination='$point3') OR (origin='$point3' AND destination='$point4') OR (origin='$point4' AND destination='$point5')

编辑

好的,根据您在 cmets 中的以下需求,我为您制定了一个简单的解决方案....

$arr = array("Vegas","Iowa","Utah","Washington"); //your array

//First part of query string build... 
$sql = "SELECT SUM(distance) FROM table WHERE";

//Loop through the array...based on its # of contents
for($i=0;$i<count($arr);$i++){
   if(!empty($arr[$i+1])){
   $sql.=" (origin='".$arr[$i]."' AND destination='".$arr[$i+1]."') OR";}
 }
  //Hack off the end bit, which contains an OR appended to the string...
  $sql = substr($sql, 0, -3);

  //$sql is now ready to be used in a query
  mysql_query($sql); 

【讨论】:

  • 但是数组是随机的,上面我只是按顺序排列它,有时数组会是 (a,v,d,z,l,m) --> 我需要将它排序为->v、v->d、d->z 等。那是我的问题
  • 所以问题是什么.....列表中您可以访问变量,在您的示例中 a->v v->d, d->z 与 point1-> 完全相同point2 point2->point3 point3->point4,除了你没有在你的问题中问这个,你甚至从未提到过
  • 对不起,我是这个论坛的新手,我在发帖时遇到错误:-(当我点击帖子时我没有完成我的问题,我认为我的连接有问题
  • 我的问题是数组的值是随机的,我只需要对其进行排序。
  • 我知道,你已经说过了,但这是一个非常广泛的问题......即,对于这个特定问题,“随机”意味着什么......以及你想如何排序吗??即你正在处理什么样的数据?
【解决方案2】:

这一切都可以在 SQL 中完成:

SELECT SUM(distance) 
FROM table 
WHERE (origin='a' AND destination='b') 
   OR (origin='b' AND destination='c')
   OR (origin='c' AND destination='d')

等等。

【讨论】:

  • 是的,但我将如何从另一个函数的数组中提取 a->b、b->c、c->d 有时是数组(a、r、s、t、b )
【解决方案3】:

使用extract

会将数组中的元素提取到变量中,使用键作为名称。

【讨论】:

  • 但是数组是随机的,上面我只是按顺序排列它,有时数组会是 (a,v,d,z,l,m) --> 我需要将它排序为->v、v->d、d->z 等。那是我的问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多