2014-10-19 193 views
0

在这个例子中是两个数组,但实际上可能是其他数量的数组(我不知道我可能有多少个数组)。Php如何在变量名中包含另一个变量

$some_name = array ("Volvo_0",220,180,); 
$array_name_for_variable[]='some_name';//here i create another array latter to loop through 

$another_name = array ("Volvo_1",221,181,); 
$array_name_for_variable[]='another_name'; 

在这个例子中,我只是想print_r我可能拥有的数组。所以我通过$array_name_for_variable循环。像

foreach($array_name_for_variable as $i_array_name_for_variable => $val_array_name_for_variable) { 

试图打印特定的阵列(如print_r($some_name)),使用该

echo '<pre>', print_r($['val_array_name_for_variable'], true), '</pre> $val_array_name_for_variable __<br/>'; 

但看到错误Parse error: syntax error, unexpected '[', expecting T_VARIABLE or '$'

} 

print_r($['val_array_name_for_variable'])是错误的。试过这print_r($[$val_array_name_for_variable]);。也有错误。

任何想法需要改变。

为什么这一切,我需要......

我有12列,但我不知道是哪12会在一个特定的页面中使用。

因此页面加载时,12个数组中的一些被定义(使用)。

我可能会写如array_1存在,然后长的HTML代码使用array_1中的变量。

然后,如果array_2存在并且不为空,那么使用array_2中的变量重复相同的html代码。

但不是复制粘贴(重复)的HTML代码,我决定循环通过打开的页面中存在的数组和长的HTML代码只写一次。

+0

你不能使用$ ['xxx']这是因为你需要一个变量的名字,这意味着你可以拥有$ var ['xxx']而不仅仅是$ ['xxx'],因为PHP不知道你试图用$ var ['xxx']访问哪个数组,它会知道你需要数组$ var中的键xxx的值。 – 2014-10-19 16:49:03

+1

它很难理解你想要做什么 – Dwza 2014-10-19 16:51:24

+0

结果是'some_name','$ val_array_name_for_variable __','another_name'和'$ val_array_name_for_variable __'? – Tim 2014-10-19 16:56:38

回答

1

你可以解决这个问题:

$some_name = array ("Volvo_0",220,180,); 
$array_name_for_variable[]=$some_name; 

$another_name = array ("Volvo_1",221,181,); 
$array_name_for_variable[]=$another_name; 

然后遍历它:

foreach($array_name_for_variable as $i_array_name_for_variable => $val_array_name_for_variable) { 
echo '<pre>', print_r($val_array_name_for_variable, true), '</pre><br/>'; 
} 

这将打印所有$ array_name_for_variable中的元素。

评论是否需要对输出进行任何更改。

说明:代码实际上在做什么是遍历数组$ array_name_for_variable的所有元素。它为它中的每个元素创建一个key =>值。第一次迭代的值($ val_array_name_for_variable)为:$ some_name。键($ i_array_name_for_variable) - 数组中的元素位置,因此在第一次迭代中它将是0(因为它总是从0开始)。

如果你不需要,你可以做这样的元素位置:

foreach($array_name_for_variable as $val_array_name_for_variable) { 
echo '<pre>', print_r($val_array_name_for_variable, true), '</pre><br/>'; 
} 

这将产生完全相同的输出上面的代码片段相同。

为了向数组添加元素,您必须传递一个变量,并且只传递一个字符串。

编辑:基于新添加的信息 的代码应该是:

foreach($array_name_for_variable as $i_array_name_for_variable => $val_array_name_for_variable) { 
if (array_key_exists($i_array_name_for_variable, $val_array_name_for_variable)) { 
echo '<pre>', print_r($val_array_name_for_variable, true), '</pre><br/>'; 
} else { 
//Code if the array does not exist. 
} 
} 

参考文献:

1

您可能需要做这样的事情

$some_name = array ("Volvo_0",220,180,); 
$array_name_for_variable['some_name']= $some_name ; 

$another_name = array ("Volvo_1",221,181,); 
$array_name_for_variable['another_name']= $another_name ; 


foreach($array_name_for_variable as $i_array_name_for_variable => $val_array_name_for_variable) { 

    print_r($val_array_name_for_variable);//prints the array 
    print_r($i_array_name_for_variable);// print the keys ex :- some_name 
}