<?php
$my_array = array("hello","world","howareu");
$c = count($my_array);
for($i=0;$i<=$c;$i++){
$v = '$var'.$i;
$splited = list($v) = $my_array;
}
?>
输入 $ my_array
但预期输出:
如果我echo $var0, $var1, $var2;
hello, world, howareu
如何根据数组计数创建动态PHP变量,然后将它们转换为字符串列表?
答案 0 :(得分:0)
这是你需要处理的数据的问题......如果它非常静态,你不需要第二个foreach(),因为你无论如何比较键......
foreach($datavalueas $resultdatakey=>$resultdatavalue){
if($resultdatakey== 'A'){
//stuff for a
}
if($resultdatakey== 'B'){
//stuff for b
}
}
会变成
if(isset($datavalueas['A'])){
//stuff for a
}
if(isset($datavalueas['B'])){
//stuff for b
}
因为foreach使用了数组的副本,这对性能来说非常糟糕......
答案 1 :(得分:0)
假设我的问题是对的,你可以使用类似的东西:
$array = array( 'x', 'y', 'z' );
foreach ($array as $name )
$$name = rand(1,100);
var_dump($x);
$$是关键,第一个$意味着变量,因为第二个$用作变量的标识符。在这种情况下,值在数组中迭代。给我们3个变量:$ x,$ y,$ z。
- 编辑:
正确的代码,除了使用extract():
<?php
$my_array = array("hello","world","howareu");
$c = count($my_array);
for($i=0;$i < $c;$i++){
$v = 'var'.$i;
$$v = $my_array[$i];
}
echo "$var0, $var1, $var2";
?>
答案 2 :(得分:0)
您不需要列表。 $$会很适合你。
$my_array = array("hello", "world", "howareu");
foreach ($my_array as $key => $val)
{
$a = 'var'.$key;
$$a = $val;
}
echo $var0,", ", $var1,", " $var2;
看看这里 - Variable variables
<强>加了:强>
或者如果您需要count
和for
for ($i = 0; $i < count($my_array); $i++)
{
$a = 'var'.$i;
$$a = $my_array[$i];
}
echo $var0,", ", $var1,", " $var2;
当然,这行echo $var0,", ", $var1,", " $var2;
糟透了,看起来像废话:)但为了完全收到你想要的东西,你需要修改变量,输出就像我写的那样,或者使用像{{{{{ 1}}与grue implode
。
<强>更新强>
但是如果你只需要那个输出,为什么不使用简单的', '
:)
答案 3 :(得分:0)
您可以通过变量变量创建动态变量,如Mr.kovpack在此处所述。在下面的代码中,您可以根据对Mr.kovpack的评论访问从0到$ c-1(数组的数量)的变量。
$my_array = array("hello","world","howareu");
$c = count($my_array);
for($i=0;$i<=$c-1;$i++){
${'var'.$i} = $my_array[$i]; //Dynamic variable creation
// $splited = list($v) = $my_array;
}
echo $var0.$var1.$var2;
或者你可以使用如下:
$my_array = array("hello","world","howareu");
$c = count($my_array);
for($i=0;$i<=$c-1;$i++){
$a='var'.$i;
$$a = $my_array[$i];
}
echo $var0."-".$var1."-".$var2;
您可以阅读更多内容here