在声明数组的时候,数组是否可以赋值给它自己的元素值?在另一个数组元素中包含数组元素值?
下面是一个代码示例:
$arr = array (0 => '<ul class="'.$arr[1].'">', 1 => 'some_class');
echo $arr[0]; // <ul class="some_class">
我试过passing by reference(&$arr[1]
,而不是在上面的代码$arr[1]
),但它给出了一个语法错误。
在声明数组的时候,数组是否可以赋值给它自己的元素值?在另一个数组元素中包含数组元素值?
下面是一个代码示例:
$arr = array (0 => '<ul class="'.$arr[1].'">', 1 => 'some_class');
echo $arr[0]; // <ul class="some_class">
我试过passing by reference(&$arr[1]
,而不是在上面的代码$arr[1]
),但它给出了一个语法错误。
你可以做一些沿着这些路线
$arr = array ('<ul class="%s">', 'some_class');
,当你想要渲染只是致电
echo call_user_func_array("sprintf", $arr);
如果有更多的功能,这将工作吗?数组中的那两个元素? –
只要第一个参数中占位符的数量等于数组中元素的数量(对于模式本身减1),你就是金。 – Orangepill
这是一个非常巧妙的技巧。我一直在寻找,但它确实解决了我的问题,谢谢。 –
不,您不能在声明数组之前访问数组的元素。只需使用另一个变量:
$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">
我想这样做,如果'$ arr [1]'改变了,'$ arr [0]'也会改变。我还想避免在'echo $ arr [0]。$ arr [1]。'“>''之类的末尾加上''>''或为''>>'创建另一个数组元素'那些似乎是我唯一的选择 –
听起来像一个类的工作与价值的getter/setter,或重新考虑你的设计(也许你需要使用更多的功能?) – sgroves
赋值左侧的'$ arr'直到右边被赋值后才会存在,而右边的$ arr [1]'不能存在,直到右边完成并分配到左侧。例如你甚至在鸡还没有存在之前就试着计数你的鸡。 –