PHP:将地图字符串转换为变量

时间:2011-08-14 19:00:22

标签: php

我有来自jquery的地图:

82|81|83|84|85|86|87|88|89

我需要遍历这个地图并在mysql查询中使用它,我想做一个while循环,以便在第一次迭代中:

$ID = 82; $Position = 1;

第二次迭代:

$ID = 81; $Position = 2;

第三次迭代:

$ID = 83; $Position = 3;

......等等。感谢。

7 个答案:

答案 0 :(得分:1)

$arr = explode('|', $themap);
$length = count($arr);
for($i = 1; $i <= $length; $i++){
    // Here $i contains position
    // $arr[$i-1] contains the ID
}

PS。我强烈建议将查询放在循环中,除非绝对需要。使用单个查询会更好。您可以使用MySQL的CASE WHEN THEN END语法在单个查询中获得所需内容。

答案 1 :(得分:1)

在您的情况下,您可以在PHP中使用regular expressionexplode 代码

<?php
 $var = "82|81|83|84|85|86|87|88|89";
 $list = preg_split('/[^\d{2}]|\s/', $var);
 print_r($list);
 print_r(explode('|', $var));  
 ?>

Output

Array
(
    [0] => 82
    [1] => 81
    [2] => 83
    [3] => 84
    [4] => 85
    [5] => 86
    [6] => 87
    [7] => 88
    [8] => 89
)
Array
(
    [0] => 82
    [1] => 81
    [2] => 83
    [3] => 84
    [4] => 85
    [5] => 86
    [6] => 87
    [7] => 88
    [8] => 89
 )

在这种情况下,您可以使用explode,但regex可以解决任何复杂问题。只要有意义,请尝试使用它。

答案 2 :(得分:0)

你可以爆炸它,并使用键+ 1作为你的位置值。

$vals = explode("|", "82|81|83");

foreach ( $vals as $pos => $val )
  echo 'Position: ' . ($pos+1) . ' Value: ' . $val . '<br/>';

/* Outputs:
   Position: 1 Value: 82
   Position: 2 Value: 81
   Position: 3 Value: 83
*/

答案 3 :(得分:0)

使用PHP explode()函数将字符串拆分为多个部分。

<?php
    $my_array = explode('|',$input_string);
?>

请参阅此处的手册页:http://php.net/manual/en/function.explode.php

答案 4 :(得分:0)

以下代码:

<?php

$map_orig = '82|81|83|84|85|86|87|88|89';

$map = explode('|', $map_orig);

foreach ($map as $pos => $item) {
    print '$ID = '.$item.', $Position = '.($pos+1).PHP_EOL;
}

会给你以下结果:

$ID = 82, $Position = 1
$ID = 81, $Position = 2
$ID = 83, $Position = 3
$ID = 84, $Position = 4
$ID = 85, $Position = 5
$ID = 86, $Position = 6
$ID = 87, $Position = 7
$ID = 88, $Position = 8
$ID = 89, $Position = 9

请参阅this CodePad snippet以获取证明。

如果您对此解决方案有任何疑问,请告诉我。

答案 5 :(得分:0)

$map = [82, 81, 83, 84,85,86,87,88,89];

for($i=1; $i<=$map.count(); $i++){
   $ID = $map[$i-1];
   $Position = $i;
}

答案 6 :(得分:0)

$map = explode('|', $jQueryMap);
foreach ($map as $position => $ID)
{
    ...
}