2

私はこのような配列を持っています

Array
(
[0] => Array
    (
        [Unit] => Array
            (
                [Unit] => ST109347005
                [SplitCnt] => 0
                [UWin] => 
                [Unit>Part] => MOLDTOOLREPAIR
                [Unit>UK1] => MOLDSHELF1
                [Unit>UK2] => 28149813MH001
                [Unit>UK3] => MOLDTOOL
            )

    )
...

そして、このように「ユニット」(例: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');

ありがとう

4

1 に答える 1

1

最後に、条件としてSet::matches受け取る、に要約しUnit>UK1=MOLDSHELF1、正規表現を使用して評価します。エスケープ文字はサポートされていないため、を演算子としてmatch扱い、>結果として失敗します。

少なくとも一時的に抽出のためにキーの名前を変更する必要がありますが、すでにすべてのエントリを繰り返し処理している場合は、キーを手動で簡単に比較し、の名前変更と抽出をスキップできますSet::extract。理想的には、キーの名前を永続的に変更する必要があります。

于 2012-12-03T03:38:55.933 に答える