我在表字段中有一个字符串,如下所示:
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';
我该怎么做?
答案 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