通过 PHP 将自定义变量添加到数组字符串中

问题描述 投票:0回答:1

希望有人能给我指出正确的方向,主要是因为我不是 PHP 专家,但我认为这应该能够很快完成。我有一个名为 $query 的变量,它包含一个数组。该数组的内容具有用于从 SAP 中提取数据的关键字。

我需要传入我自己的名为 $myVariable 的变量(见下文),以便此查询可以根据表单提交动态提取数据。我遇到的问题是我无法弄清楚 $myVariable 应该如何在下面的字符串中表示,因此它的值嵌入到字符串中。

$query = ['QueryOption' => '$expand=DeliveryNotes($select=DocEntry)&$filter=Orders/DocEntry eq DeliveryNotes/DocumentLines/BaseEntry and DeliveryNotes/DocEntry eq DeliveryNotes/DocumentLines/DocEntry and Orders/DocEntry eq "$myVariable"', 'QueryPath' => '$crossjoin(DeliveryNotes, DeliveryNotes/DocumentLines,Orders)'];

我尝试的每个组合最终都会将文字字符串值而不是变量的值放在数组中。请帮忙!!提前致谢!

php arrays string variables
1个回答
0
投票

有两种选择:

使用

"
而不是
'
来评估字符串中的变量。在这种情况下,它不起作用,因为您在
"
声明的字符串中使用
'
。我明白你试过什么了,但是
"
声明的字符串中的
'
只是一个
"
并且没有特殊含义。因此,您的变量未被翻译。如果你这样声明你的行:

$query = ['QueryOption' => "$expand=DeliveryNotes($select=DocEntry)&$filter=Orders/DocEntry eq DeliveryNotes/DocumentLines/BaseEntry and DeliveryNotes/DocEntry eq DeliveryNotes/DocumentLines/DocEntry and Orders/DocEntry eq "$myVariable"",
          'QueryPath' => '$crossjoin(DeliveryNotes, DeliveryNotes/DocumentLines,Orders)'];

这会失败,因为字符串将以“eq”结尾。解析器还想替换其他变量 $expand、$select 和 $filter。

另一个在大多数情况下更好的选择:
只需将字符串与字符串连接器放在一起

.

$query = ['QueryOption' => '$expand=DeliveryNotes($select=DocEntry)&$filter=Orders/DocEntry eq DeliveryNotes/DocumentLines/BaseEntry and DeliveryNotes/DocEntry eq DeliveryNotes/DocumentLines/DocEntry and Orders/DocEntry eq ' . $myVariable,
          'QueryPath' => '$crossjoin(DeliveryNotes, DeliveryNotes/DocumentLines,Orders)'];

如果您需要将

$myVariable
声明为字符串,则为:

$query = ['QueryOption' => '$expand=DeliveryNotes($select=DocEntry)&$filter=Orders/DocEntry eq DeliveryNotes/DocumentLines/BaseEntry and DeliveryNotes/DocEntry eq DeliveryNotes/DocumentLines/DocEntry and Orders/DocEntry eq "' . $myVariable . '"',
          'QueryPath' => '$crossjoin(DeliveryNotes, DeliveryNotes/DocumentLines,Orders)'];
© www.soinside.com 2019 - 2024. All rights reserved.