Sınıfta foreach: Ben arr tüm taşırıcı iade edemez

2 Cevap php

Eh, benim form nesil sınıfları iyileştirilmesi tutmak ve country_data dizideki tüm ülke unsurları dönen sıkışmış. Sadece ilk iki unsur açılan seçenekleri görüntülüyor.

İşte açılan sınıftır:

//drop down form class
class DropDown
{
  function __construct ($form, $field_label, $field_name, $field_desc, $dropdown_data, $locale){
    $this->form = $form;
    $this->field_label = $field_label;
    $this->field_name = $field_name;
    $this->field_desc = $field_desc;
    $this->dropdown_data = $dropdown_data;
    $this->locale = $locale;
  }

  function getNotRequiredData(){
    global $notReqArry;
    return $notReqArry[$this->locale];
  }

  function getValue(){
    return $_POST[$this->field_name];
  }

  function option(){
    foreach ($this->dropdown_data as $key=>$value){
      return $options = sprintf('%s',$key,$value);
    };
  }
  function dropdown(){
    return $select_start = "field_name\">$this->field_desc".$this->option()."";
  }

  function getLabel(){
    $non_req = $this->getNotRequiredData();
    $req = in_array($this->field_name, $non_req) ? '' : '*';
    return $this->field_label ? $req . $this->field_label : '';
  }

  function __toString(){
    $id = $this->field_name;
    $label = $this->getLabel();
    $field = $this->dropdown();
    return 'field_name.'">'.$label.''.$field.'';
  }
}

Ve ben ekstra seçenekler için ekstra işlevini kullanın:

function generateForm ($lang,$country_list){

  switch($lang)
  {
    case 'en-US':
      //create EN web form
      echo $countryField = new DropDown ($form, 'Country', 'form_country', '--Select Country--', $country_list, 'en-US');
    break;
    case 'fr-FR':
      //create FR web form
    break;
    case 'de-DE':
      //create DE web form
    break;
    case 'ja-JP':
      //create JA web form
    break;
    default:
      //create default web form
      print('foooo');
  };
}

Ve ben sayfanın altındaki generateForm eğlenceler diyoruz.

$lang='en-US';
echo generateForm ($lang,$country_list);

Bir önceki soruya, bir uzman $ anahtar ve foreach $ değer nesne değildir sözü, ama ben burada daha çok mantık gereken ne anlamıyorum. Evet, gerçekten PHP yeni ve sadece AS kısa deneyime sahip. Yardıma ihtiyacım var.

Teşekkürler.

2 Cevap

Sizin seçenekleri fonksiyonu mevcut tüm seçenekleri ama her zaman sadece ilkini dönen yineleme yapmak için çalışıyor. Bunun yerine bu kullanın:

function options(){
  $options = '';
  foreach ($this->dropdown_data as $key=>$value){
    $options .= sprintf('<option value="%s">%s</option>',$key,$value);
  };
  return $options;
}

Bu koda göre, size açılan iki öğe var, bir sürpriz, sadece bir tane olması gerekir. Lütfen fonksiyonu beri

function options(){
foreach ($this->dropdown_data as $key=>$value){
  return $options = sprintf('%s',$key,$value);
};  }

Bu dizinin dışarı alır ve döngü çıkar sadece ilk seçeneği döndürür. Birlikte tüm öğeleri toplamak ve bir demet dönmek ya da bazı dış döngüsü içinde seçenek aspiratör çağrı ve işe yarayacaktır.