Sorun çok-dim-dizi değer alma

3 Cevap php

Aşağıdaki kodu:

      $options = $value[$i]['options'];
      print_r($options);

aşağıdaki sonucu verir:

Array ( 
  [0] => stdClass Object ( 
        [id] => 1 
        [field_id] => 1 
        [option_name] => I'm a normal user ) 
  [1] => stdClass Object ( 
        [id] => 2 
        [field_id] => 1 
        [option_name] => Store owner ) 
  [2] => stdClass Object ( 
        [id] => 3 
        [field_id] => 1 
        [option_name] => Brand owner ) 
  [3] => stdClass Object ( 
        [id] => 4 
        [field_id] => 1 
        [option_name] => Designer ) 
)

Peki neden ben çıkış echo $options[0]["option_name"] kullanarak "Ben normal bir kullanıcı değilim" olabilir?

Planım çıktı id ve option_name foreach döngü kullanarak için:

  foreach ($options as $option)
  {
    echo "<option value='".$option["id"]."'>".$option["option_name"]."</option>";
  } 

Bu kolay olmalı .... ama ben beceriksiz değilim: (

3 Cevap

İkinci seviye bir dizi ancak bir nesne değildir. Bu doğru olacaktır:

$options[0]->option_name

Foreachta bu kullanmayı deneyin

$option->option_name;
$option->id;

$options aslında bir amacıdır. Eğer bunun bir örneği olduğunu görmek neden Thats stdClass. Bu sınıfta her değeri -> erişimcisi erişilir.

BTW, düzenli olarak bu gibi erişebilirsiniz:

$options[0]->option_name;
$options[0]->id;

Eğer yeni bir değişken için bu değerlerden birini atarsanız Unutmayın, bir nesne değil, bir dize alıyoruz. Böyle bir şey yaparak düzeltebilirim:

$string = (string)$options[0]->option_name;

Eğer sadece bir örnek gösterir şekilde çıktılıyorsanız, ancak bir dizi tuşu, dediğiniz gibi değerini kullanarak olsaydı daha önemli olsaydı bu bir sorun değildir. Örnek:

$array[$options[0]->id] == $array[1]; // FALSE!!
$array[(string)$options[0]->id] == $array[1] // True.