0

simpleXmlElement から新しい配列を構築しようとしています。正しい階層にないだけで、必要な情報を取得しています。

$xmlNew1 = new SimpleXMLElement($responseNew1);
$test = array();
foreach ($xmlNew1->children() as $newChild){
    $classIden[] = (string)$xmlNew1->class['id'];
    $item[] = (string)$xmlNew1->code;
    $family[] = (string)$xmlNew1->family;
    for($i=0, $count = count($classIden); $i < $count; $i++) {
        $test[$item[$i]][$family[$i]]= $classIden[$i];
    }
}

print_r($test);

これは私に与えます:

Array
(
[9522] => Array
    (
        [Mens Hats] => 44
    )

[9522-NC-NO SIZE] => Array
    (
        [Mens Hats] => 44
    )

[B287CSQU] => Array
    (
        [Boys] => 1
    )

でも私はしたい

Array
(
[9522] => Array
(
    [family] => Mens Hats
    [classId] => 44
)

なにか提案を?ありがとう!

4

2 に答える 2

1

これはおそらくそれを行う必要があります(メインループの内容を置き換えるため):

$id = (string)$newChild->class['id'];
$code = (string)$newChild->code;
$family = (string)$newChild->family;

$items[$code] = array(
    'family' => $family,
    'classId' => $id,
);

編集

$newChildの代わりに使用するのを忘れました$xmlNew1

于 2012-08-14T04:24:43.830 に答える
0

HTMLについてあまり知らないので、あなたの階層はわかりません。構造を非表示にしました。ただし、おそらく直接探している形式でアレイを構築する必要があります。

それをもっと簡単にしようとしましょう。すべての子を含む変数があるとしましょう。したがって、反復を分解してこれらの子をロードできます。読み込み中:

 $xmlNew1 = new SimpleXMLElement($responseNew1);
 $newChildren = $xmlNew1->children();

探しているすべてのxml要素を取得するのに十分かどうか$xmlNew1->children()はわかりませんが、そうだと仮定しましょう。

次の部分は反復についてです。$test書かれているように、子を反復処理しながら配列を構築する必要があります-すでに部分的に行ったように:

$test = array();
foreach ($newChildren as $newChild) {
    ...
}

不足している部分は、次の場所で構造を作成することです$test

Array(
    [9522] => Array(
        [family] => Mens Hats
        [classId] => 44
    )

@Jackがここで提供する提案が気に入っています。まず、抽出する値を独自の変数に割り当ててから、エントリを作成します。

$newItem = array(
    'family' => $family,
    'classId' => $id,
);
$test[$code] = $newItem;

当然、それをイテレーションに配置する必要があります。反復が完了すると、$test配列は探している形式になります。

これがお役に立てば幸いです。

于 2012-08-14T08:00:05.093 に答える