php dizi ile dizesi yoluyla bir özelliği erişmek?

4 Cevap php

Ben iki nesne arasındaki haritasına gereken özelliklerin büyük bir liste var ve birinde, ben harita gereken değeri bir dizinin içine gömüldü. Ben kodu özellik adlarını sabit kodlama önlemek umuyorum.

Ben böyle bir sınıf varsa:

class Product {
    public $colors, $sizes;
}

Bu gibi özelliklere erişebilirsiniz:

$props = array('colors', 'sizes');
foreach ($props as $p) {
    $this->$p = $other_object->$p;
}

Soldaki özelliklerin her biri bir dizi varsa Bildiğim kadarıyla söyleyebilirim, ben bunu yapamam:

foreach ($props as $p) {
    $this->$p[0]['value'] = $other_object->$p;
}

Bu doğru mudur, yoksa bu etrafında zekice bir yol eksik?

(Bu drupal olduğunu, ama gerçekten bu konularda. Sanmıyorum)

4 Cevap

Ben kaşlı sarın inanıyorum {}:

foreach ($props as $p) {
    $this->{$p}[0]['value'] = $other_object->$p;
}

Edit:

Tamam. Şimdi beynim döndü. Kafa karıştırıcı düzenlemeler için üzgünüm.

Ayrıca bu deneyin:


$props = get_object_vars($this);
foreach ($props as $p) {
    $this->{$p}[0]['value'] = $other_object->{$p};
}

Bu deniyor variable, variables.

Ben sorununuzu anlamıyorum. Bu çalışır:

class Test {
    public $prop = "prov value";
}
$arr = array(array("prop"));
$test = new Test();
$test->$arr[0][0] = "new prop value";
var_dump($test);

sonuç:

object(Test)#1 (1) {
  ["prop"]=>
  string(14) "new prop value"
}