PHP sayısal tuşu ile veri nesne atıfta

4 Cevap

Ben bu gibi veri nesne için bir dizi çevirdim:

<?php
$myobject->data = (object)Array('zero','one','two);
print_r($myobject);
?>

Ve çıktı:

stdClass Object ( [data] => stdClass Object ( [0] => zero [1] => one [2] => two ) )

Şimdiye kadar iyi. Ama sayısal tuşları başvurmak çalışırsanız ...

<?php
$myobject->data = (object)Array('zero','one','two);
$counter = 1;
echo $myobject->data->$counter;
?>

Hiçbir şey ... döndürdü! Ben "bir" echo beklenebilir.

Ben bunu yanlış yapıyorum?

4 Cevap

Yani PHP bir gariplik var, sen $object->data->{1} kullanarak erişmek gerekir. Yoksa üyeleri erişmek için diziye geri dönüştürmek olabilir. Ama mesela böyle bir şey denemek, bu nesne üyeleri için uygun adları için iyi olduğunu düşünüyorum:

$myobject->data = (object)Array('m0' => 'zero','m1' => 'one','m2' => 'two');
$myObject->data->m1;

You could try accessing it as an array element. But I'm not sure whether that would work or not. However, what you can do is looping over the object elements (or rather, properties) using a foreach loop.

Şöyle:

foreach ($myobject->data as $key => $value)
    echo "$key is my key.<br />";

Ben sadece çok, anahtar erişebilirsiniz emin değilim.

Var sorun olduğunu $counter otomatik look-up için String dönüştürülür, olduğunu. Denemek

$myobject->$counter = "abc";
var_dump($myobject);

ve ne demek istediğimi görürsünüz. Bu Franz önerdi yöntemi kullanmak aşmak için.

echo $myobject->data[$counter];

Yanılmıyorsam eğer.