2013-07-02 215 views
0

在声明数组的时候,数组是否可以赋值给它自己的元素值?在另一个数组元素中包含数组元素值?

下面是一个代码示例:

$arr = array (0 => '<ul class="'.$arr[1].'">', 1 => 'some_class'); 

echo $arr[0]; // <ul class="some_class"> 

我试过passing by reference&$arr[1],而不是在上面的代码$arr[1]),但它给出了一个语法错误。

+0

赋值左侧的'$ arr'直到右边被赋值后才会存在,而右边的$ arr [1]'不能存在,直到右边完成并分配到左侧。例如你甚至在鸡还没有存在之前就试着计数你的鸡。 –

回答

1

你可以做一些沿着这些路线

$arr = array ('<ul class="%s">', 'some_class'); 

,当你想要渲染只是致电

echo call_user_func_array("sprintf", $arr); 
+0

如果有更多的功能,这将工作吗?数组中的那两个元素? –

+0

只要第一个参数中占位符的数量等于数组中元素的数量(对于模式本身减1),你就是金。 – Orangepill

+0

这是一个非常巧妙的技巧。我一直在寻找,但它确实解决了我的问题,谢谢。 –

1

不,您不能在声明数组之前访问数组的元素。只需使用另一个变量:

$class_name = 'some_class' 
$arr = array (0 => '<ul class="'.$class_name.'">', 1 => $class_name); 

echo $arr[0]; // <ul class="some_class"> 

你也可以单独分配要素,并指他们在以后的任务:

$arr = array(); 
$arr[1] = 'some_class'; 
$arr[0] = '<ul class="'.$arr[1].'">'; 

echo $arr[0]; // <ul class="some_class"> 
+0

我想这样做,如果'$ arr [1]'改变了,'$ arr [0]'也会改变。我还想避免在'echo $ arr [0]。$ arr [1]。'“>''之类的末尾加上''>''或为''>>'创建另一个数组元素'那些似乎是我唯一的选择 –

+1

听起来像一个类的工作与价值的getter/setter,或重新考虑你的设计(也许你需要使用更多的功能?) – sgroves

相关问题