0

親子のリストをクラス "city" のオブジェクトに変換する関数を作成しました:

   public static function createCity(array $config)
{
    $city= new City();

    $id=key($config);
    $label= $config[$id]['label'];

    $city->setId($id);
    $city->setLabel($label);

    $children = $config[$id]['childrens'];

    if(!empty($children)){
        foreach($children as $key_child => $child) {
            $children = array($key_child => $child);

            $city->addChild(self::createCity($children));

        }
    }
  return $city;
}

次に、反対のことを行う関数を作成します => Class City 型のオブジェクトを配列に変換するので、次のようにします。

   public function getCityArray(City$rootCity)
{
        $result = array();

        $result['id'] = $rootCity->getId();
        $result['label']= $rootCity->getLabel();

    $children = $rootCity->getChildren();


    if ( !empty($children)) {
        foreach ($children as $key_child => $child) {

            $result['childrens'] = array($key_child => $child );

            $result[] = $this->getCityArray($child);
        }
    }

    return $result;

}

しかし、 var_dump('$result') を実行すると、終わりのないリストがあり、ループが停止しないため、機能しませんか?

4

1 に答える 1

0

これを試して。完全なコードがわからないので、動作するかどうかはわかりません。クラス変数$resultには結果が含まれます。

$result = array();
public function getCityArray(City $rootCity) {

  $result['id'] = $rootCity->getId();
  $result['label']= $rootCity->getLabel();
  $children = $rootCity->getChildren();

  if ( !empty($children)) {
    $result['childrens'] = $children;
    $this->result[] = $result;
    foreach ($children as $key_child => $child) {
      $this->getCityArray($child);
    }
  }

}
于 2012-10-03T17:15:06.870 に答える