我有一个像这样的数组
Array
(
[0] => Array
(
[Unit] => Array
(
[Unit] => ST109347005
[SplitCnt] => 0
[UWin] =>
[Unit>Part] => MOLDTOOLREPAIR
[Unit>UK1] => MOLDSHELF1
[Unit>UK2] => 28149813MH001
[Unit>UK3] => MOLDTOOL
)
)
...
并想提取存储在'Unit'中的序列号数组(例如:ST109347005)
$newarray = Set::extract($data,'/Unit[Unit>UK1=MOLDSHELF1][Unit>UK3=MOLDTOOL]/Unit');
哪个不起作用,因为>是一个保留字符。我不确定允许它工作的语法是什么。我想它会是这样的(这不起作用)
$newarray = Set::extract($data,'/Unit[Unit\>UK1=MOLDSHELF1][Unit\>UK3=MOLDTOOL]/Unit');
由于
答案 0 :(得分:1)
在最后它归结为Set::matches
,它将接收Unit>UK1=MOLDSHELF1
作为条件,并使用正则表达式对其进行评估。不支持转义字符,因此match
会将>
视为运算符,因此会失败。
您需要重命名密钥,至少暂时用于提取,但是当您已经遍历所有条目时,您可以轻松地手动比较密钥,并通过Set::extract
跳过重命名和提取。理想情况下,您应该永久重命名密钥。