0

そのため、2時間検索した後、探しているものが見つからないようです。私がやろうとしているのは、配列で foreach ループを実行することです。それが不可能であることはわかっていますが、私がやろうとしていることを説明する唯一の方法だと思います。望ましい出力は次のようなものです。

groups:
  fafa:
    permissions:
      worldguard.stack: true
      worldedit.biome.list: true
      worldedit.biome.set: true
Array
(
    [groups] => Array
        (
            [fafa] => Array
                (
                    [permissions] => Array
                        (
                            [worldguard.stack] => 1
                            [worldedit.biome.list] => 1
                            [worldedit.biome.set] => 1
                        )

                )

        )

)

しかし、私が得ているように見えるのはこれです:

groups:
  fafa:
    permissions:
      worldguard.stack: true
Array
(
    [groups] => Array
        (
            [fafa] => Array
                (
                    [permissions] => Array
                        (
                            [worldguard.stack] => 1
                        )

                )

        )

)

worldedit.biome.setと が表示されないことに注意しworldedit.biome.listてください。私は何か間違ったことをしていることを知っていますが、これを行う正しい方法が何であるかを理解できません。これが私がやっていることです:

<?php
include('spyc.php');
session_start();
$groupname = $_SESSION['gname'];
$permnode = $_POST['checkbox2'];
foreach($permnode as $perm){
$array = array (
    'groups'  => array(
        $groupname => array(
            'permissions' => array(
                $perm => true,

                )
            )
        )
);
}
$yaml = Spyc::YAMLDump($array);
echo '<pre>';
echo $yaml;
echo '</pre>';

echo '<pre>';
print_r($array);
echo '</pre>';

?>
4

1 に答える 1

0

コードでは$array、ループの反復ごとにデータを何度も上書きしています。

$array = array('groups' => array()); // creating empty array of groups, just once
foreach($permnode as $perm){
    if (!isset($array['groups'][$groupname])) { // if the group with a particular
                                                // name doesn't exist yet

        // then creating it and initializing with empty permissions array
        $array['groups'][$groupname] = array('permissions' => array());
    }

    // here is where you was wrong: instead of overwriting the whole array
    // with new data - you're just adding another item into permissions array
    $array['groups'][$groupname]['permissions'][$perm] = true;
}
于 2013-07-20T11:22:21.517 に答える