PHP将逗号数组分隔为变量/值

时间:2014-09-08 09:39:59

标签: php

我在表字段中有一个字符串,如下所示:

part1=1,part2=S,part3=Y,part4=200000

要从表中调用它,我这样做:

 while($row = mysqli_fetch_array($result)) {


        $row['mystring'];


}

我的问题是我需要将部分分成变量,例如:

由此:

part1=1,part2=S,part3=Y,someothername=200000

To This:

$part1 = '1';
$part2 = 'S';
$part3 = 'Y';
$someothername = '200000';

我该怎么做?

5 个答案:

答案 0 :(得分:6)

像这样使用

parse_str( str_replace(",", "&", "part1=1,part2=S,part3=Y,someothername=200000") );

使用名称如下:

$part1 // return 1
$part2 // return S
$part3 // return Y

按您的方式工作,请参阅demo

答案 1 :(得分:1)

首先拆分字符串:

$s = "part1=1,part2=S,part3=Y,part4=200000";
$a = explode(",",$s);

然后foreach的一部分字符串(“part1 = 1”...)创建一个数组并作为变量爆炸:

foreach($a as $k=>$v)
{
 $tmp = explode("=",$v);
 $tmp = array($tmp[0]=>$tmp[1]);
 extract($tmp);
}
echo $part1;

答案 2 :(得分:1)

explode字符串加倍以获取所需字段:

$string ="part1=1,part2=S,part3=Y,someothername=200000";

foreach (explode(',', $string) as $parts) {
  $part = explode('=', $parts);
  $array[$part[0]] = $part[1];
}

var_dump($array);

输出:

 array(4) {
  ["part1"]=>
  string(1) "1"
  ["part2"]=>
  string(1) "S"
  ["part3"]=>
  string(1) "Y"
  ["someothername"]=>
  string(6) "200000"
}

我不建议使用变量来获得输出:

$part1 = ...
$part2 = ...

使用数组可能是更简单,最安全的方法。正如我在评论中所建议的那样,它避免了与变量名称的潜在冲突。

答案 3 :(得分:1)

如果您使用PHP 5.3+,则可以使用array_map

<?php

$string = 'part1=1,part2=S,part3=Y,part4=200000';

array_map(function($a){
    $tmp = explode('=', $a, 2);
    global ${$tmp[0]}; //make vars available outside of this function scope
    ${$tmp[0]} = $tmp[1]; 
}, explode(',', $string));

//Variables available outside of array_map scope
echo $part1 . '<br>';
echo $part2 . '<br>';
echo $part3 . '<br>';
echo $part4 . '<br>';

?>

答案 4 :(得分:0)

您可以使用名为“变量变量”的内容。如果使用双美元符号而不是单个符号,则可以将变量的内容声明为变量。例如:

$fruit = "apple";
$$fruit = "this is the apple variable";
echo $apple;

它将输出以下内容:

  

这是苹果变量

从数组中定义变量时,你必须要有点棘手,因为你必须用大括号包围原始变量。 (例如:${$fruit[0]}

所以问题的答案是:

$parts = "part1=1,part2=S,part3=Y,someothername=200000";
$parts_array = explode(",", $parts);
foreach ($parts_array as $value) {
    $temp = explode("=", $value);
    ${$temp[0]} = $temp[1];
}
echo "$part1, $part2, $part3, $someothername";

PHPFiddle链接:http://phpfiddle.org/main/code/adyb-ug5n