PHP-一步分配变量并使用它为数组分配值

时间:2019-07-17 12:14:19

标签: php

我有一个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'
  ]
]

有没有更清洁的建议?

3 个答案:

答案 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;