我有一个config.php
文件,其中包含以下示例数组:
return [
myarray => [
'foo' => 'bar_'.str_random(5).'.log'
]
]
我想将str_random(5)
分配到$var
变量中并一步一步使用;例如,类似(此示例不起作用):
return [
myarray = [
'foo' => 'bar_'.(($var=str_random(5)) && $var).'.log'
]
]
输出应为:
echo $var;
uoEUu
print_r($myarray);
[
'foo' => 'bar_uoEUu.log'
]
谢谢
编辑
好的,我找到了这个解决方案,但是它不喜欢我:
return [
myarray = [
'foo' => 'bar_'.$var=str_random(5).''.$var.'.log'
]
]
有没有更清洁的建议?
答案 0 :(得分:1)
只需将其包装在方括号中即可:
$myarray = [
'foo' => 'bar_'.($var=uniqid()).'.log'
]
var_dump($var, $myarray);
哪个给您:
string(13) "5d2f1f1e01338"
array(1) { ["foo"]=> string(34) "bar_5d2f1f1e01338.log" }
在此处查看:https://3v4l.org/JfZf6
答案 1 :(得分:1)
该解决方案实际上比您想象的简单得多:
$myarray = [
'foo' => 'bar_'.($var=str_random(5)).'.log'
];
之所以可行,是因为任何赋值都可以用作 expression ,其值就是所赋值。这通常不是必需的,但是有一些用途,例如将多个变量设置为相同的值:
$foo = $bar = 42;
在这种情况下,您要连接一个固定的字符串,一个表达式(恰好是一个赋值)和另一个固定的字符串;多余的括号只是确保在连接之前对赋值表达式进行求值。
答案 2 :(得分:1)
IMO,您正在考虑问题。如果您在将$var
分配给foo
后需要使用$var = str_random(5);
$myarray = [
'foo' => "bar_$var.log"
];
,则可以执行以下操作:
DECLARE
a_id NUMBER;
BEGIN
a_id := your_sequence.nextval;
INSERT INTO car_parts (cp_id, cp_name, cp_price)
VALUES (a_id, :P8_NAME, :P8_PRICE);
INSERT INTO part_and_model (part_id, model_id)
VALUES (a_id, :P8_CAR_MODEL);
END;