0

なぜこれを行っているかについての参考として、SOAP / AXL WSDL API を使用しようとしています。私が今持っている呼び出しで作業している部分は、アクセスできるように配列構造を構築することです。

参考までに、API 要件はこちらです。私が抱えている課題は、上位の配列要素ごとにメンバー配列を構築することです。 https://developer.cisco.com/media/axl-schema-11-0/Files/AXLSoap_AddCssReq.html#Link68

配列構成:

    `$cssnames = array(
                array("name"=>"US-420-blah Gateway",
                        "description"=>"US-420 Gateway CSS",
                        "members"=>array(
                                        array(
                                            "member"=>array(
                                                "Index"=>"1",
                                                "Routeparition"=>"fancyParition"),
                                        array("member"=>array(
                                                "Index"=>"2",
                                                "Routeparition"=>"otherpartition")
                                            )))),
                array("name"=>"US-420-blah Internal Local DN CallFwd",
                        "description"=>"US-420 CSS for Call Forward",
                        "members"=>array(
                                        array(
                                            "member"=>array(
                                                "Index"=>"1",
                                                "Routeparition"=>"fancyParition"),
                                        array("member"=>array(
                                                "Index"=>"2",
                                                "Routeparition"=>"otherpartition")
                                            )))),
                array("name"=>"US-420-blah Internal Local LD DN CallFwd",
                        "description"=>"US-420 for Call Forward LD Allowed",
                        "members"=>array(
                                        array(
                                            "member"=>array(
                                                "Index"=>"1",
                                                "Routeparition"=>"fancyParition"),
                                        array("member"=>array(
                                                "Index"=>"2",
                                                "Routeparition"=>"otherpartition")
                                            )))),
                array("name"=>"US-420-blah Phones Device",
                        "description"=>"US-420 Device CSS",
                        "members"=>array(
                                        array(
                                            "member"=>array(
                                                "Index"=>"1",
                                                "Routeparition"=>"fancyParition"),
                                        array("member"=>array(
                                                "Index"=>"2",
                                                "Routeparition"=>"otherpartition")
                                            )))),
                array("name"=>"US-420-blah Phones Device Internal Only",
                        "description"=>"US-420 Device CSS Internal",
                        "members"=>array(
                                        array(
                                            "member"=>array(
                                                "Index"=>"1",
                                                "Routeparition"=>"fancyParition"),
                                        array("member"=>array(
                                                "Index"=>"2",
                                                "Routeparition"=>"otherpartition")
                                            )))));                          
foreach($cssnames['members'] as $items){
        echo($items['0']['member'] . "</br>");
        }`

ここでの目標は、ユーザーがforeach各配列メンバーをループして、1 つの CSS の値全体を返すことができるようにすることです。したがって、完全な CSS は次のようになります。

array("name"=>"US-420-blah Gateway", "description"=>"US-420 Gateway CSS", "members"=>array( array( "member"=>array( "Index"=>"1", "Routeparition"=>"fancyParition"), array("member"=>array( "Index"=>"2", "Routeparition"=>"otherpartition") )))),

シスコのドキュメントによると、CSS には次の要素が含まれています。

  • 名前
  • 説明
  • メンバー

メンバー自体には、次の複数のキー値のペアが含まれています。

  • 索引
  • RoutePartitionName

質問

  1. 配列構造は正しいですか? キーと値のペアが衝突するため、各「メンバー」は配列である必要があるため、そうすると思います。
  2. 可能であれば、foreach ループを使用して各 KVP にアクセスするにはどうすればよいですか?
  3. 私はこれについてすべて間違っていますか?

テスト ある程度の進歩を遂げ始めていますが、少し道に迷っています。配列には 5 つのレベルがあるため、5 回ループする必要があることは理にかなっています。どうすればよいかわからないのは、関心のある KVP のみを抽出することです。

セミワーキングリターン。

$cssnames = array("css_list"=>
                array("name"=>"US-420-blah Gateway",
                        "description"=>"US-420 Gateway CSS",
                        "members"=>array(
                                        array("member"=>array(
                                                "Index"=>"1",
                                                "Routeparition"=>"fancyParition"),
                                        array("member"=>array(
                                                "Index"=>"2",
                                                "Routeparition"=>"otherpartition")
                                            )))));

foreach($cssnames as $items=>$css){
    foreach ($css as $name=>$test){ 
        echo($test . "</br>");
        foreach($test as $memberlist=>$member){
            foreach($member as $memberitems=>$memberdetails){
                foreach($memberdetails as $details=>$config){
                    echo($config . "</br>");    
                }
            }
        }
    }
}

アップデート

それで、もう少し進歩。単一の配列アイテムを保持する配列があることに気付きました。とても無意味です。それを削除すると、もっと理にかなっているようです。私は今、より多くのテストに進んでいます。更新されたコード:

$cssnames = array("css_list"=>
                array("name"=>"US-420-blah Gateway",
                        "description"=>"US-420 Gateway CSS",
                        "members"=>array(
                                        array(
                                                "Index"=>"1",
                                                "Routeparition"=>"fancyParition"),
                                        array(
                                                "Index"=>"2",
                                                "Routeparition"=>"otherpartition")
                                            )));

foreach($cssnames as $level1){
    echo($level1['name'] . "</br>");
    echo($level1['description'] . "</br>");

        foreach ($level1['members'] as $level2){
            echo($level2['Index'] . "</br>");
            echo($level2['Routeparition'] . "</br>");
    }
}
4

1 に答える 1

0

最終的な修正は、ネストされた foreach ループ内のアイテムを正しい順序で取得することでした。

    foreach($csslist as $level1) {
        $cssname = $level1['name'];
        $cssdescription = $level1['description'];

        foreach($level1['members'] as $level2){ 
            $members[] = array(
                                "index"=>$level2['index'],
                                "routePartitionName"=>$level2['routePartitionName']);
        }
        $programTags[] = array(
                            "name"=>"$cssname",
                            "description"=>"$cssdescription",
                            "members"=>$members);
        //Empty the Members array for the next loop iteration
        $members = array();
    }
于 2016-02-26T05:43:15.497 に答える