PHP将逗号数组分隔为变量/值
表字段中有一个字符串,如下所示:PHP将逗号数组分隔为变量/值,php,Php,表字段中有一个字符串,如下所示: part1=1,part2=S,part3=Y,part4=200000 要从表中调用它,请执行以下操作: while($row = mysqli_fetch_array($result)) { $row['mystring']; } 我的问题是我需要将这些部分分成变量,例如: $fruit = "apple"; $$fruit = "this is the apple variable"; echo $apple; 由此: pa
part1=1,part2=S,part3=Y,part4=200000
要从表中调用它,请执行以下操作:
while($row = mysqli_fetch_array($result)) {
$row['mystring'];
}
我的问题是我需要将这些部分分成变量,例如:
$fruit = "apple";
$$fruit = "this is the apple variable";
echo $apple;
由此:
part1=1,part2=S,part3=Y,someothername=200000
为此:
$part1 = '1';
$part2 = 'S';
$part3 = 'Y';
$someothername = '200000';
如何执行此操作?第一个拆分字符串:
$s = "part1=1,part2=S,part3=Y,part4=200000";
$a = explode(",",$s);
然后为字符串的每个部分(“part1=1”…)创建一个数组并分解为变量:
foreach($a as $k=>$v)
{
$tmp = explode("=",$v);
$tmp = array($tmp[0]=>$tmp[1]);
extract($tmp);
}
echo $part1;
双击
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 = ...
在这里,使用数组可能是最简单、最安全的方法。正如我在评论中所建议的,它避免了与变量名的潜在冲突。这样使用
parse_str( str_replace(",", "&", "part1=1,part2=S,part3=Y,someothername=200000") );
与以下名称一起使用:
$part1 // return 1
$part2 // return S
$part3 // return Y
如您所愿,请参阅您可以使用称为“变量”的东西。如果使用双美元符号而不是单美元符号,则可以将变量的内容声明为变量。例如:
$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链接:如果使用PHP5.3+可以使用数组映射
<?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>';
?>
您可以在最后使用extract()来获取变量,但我也坚持使用array@DavidJones是的,我应该说明,在这种情况下,最好避免直接命名变量,以避免可能与同名的现有变量发生冲突。是的,我同意您关于保留数组的意见,但OP需要变量:)