Как я могу вставить данные из массива в объект? - PullRequest
0 голосов
/ 06 сентября 2018

Это мой объект $classes:

object(Doctrine\ORM\Mapping\ClassMetadata)#2984 (40) {
  ["name"]=>
  string(18) "App\Entity\Members"
  ["namespace"]=>
  string(10) "App\Entity"
  ["rootEntityName"]=>
  string(18) "App\Entity\Members"
  ["customGeneratorDefinition"]=>
  NULL
  ["customRepositoryClassName"]=>
  string(29) "App\Repository\UserRepository"
  ["isMappedSuperclass"]=>
  bool(false)
  ["isEmbeddedClass"]=>
  bool(false)
  ["parentClasses"]=>
  array(0) {
  }
  ["subClasses"]=>
  array(0) {
  }
  ["embeddedClasses"]=>
  array(0) {
  }
  ["namedQueries"]=>
  array(0) {
  }
  ["namedNativeQueries"]=>
  array(0) {
  }
  ["sqlResultSetMappings"]=>
  array(0) {
  }
  ["identifier"]=>
  array(1) {
    [0]=>
    string(2) "id"
  }
  ["inheritanceType"]=>
  int(1)
  ["generatorType"]=>
  int(4)
  ["fieldMappings"]=>
  array(5) {
    ["id"]=>
    array(9) {
      ["fieldName"]=>
      string(2) "id"
      ["type"]=>
      string(7) "integer"
      ["scale"]=>
      int(0)
      ["length"]=>
      NULL
      ["unique"]=>
      bool(false)
      ["nullable"]=>
      bool(false)
      ["precision"]=>
      int(0)
      ["id"]=>
      bool(true)
      ["columnName"]=>
      string(2) "id"
    }
    ["username"]=>
    array(8) {
      ["fieldName"]=>
      string(8) "username"
      ["type"]=>
      string(6) "string"
      ["scale"]=>
      int(0)
      ["length"]=>
      int(25)
      ["unique"]=>
      bool(true)
      ["nullable"]=>
      bool(false)
      ["precision"]=>
      int(0)
      ["columnName"]=>
      string(8) "username"
    }
    ["password"]=>
    array(8) {
      ["fieldName"]=>
      string(8) "password"
      ["type"]=>
      string(6) "string"
      ["scale"]=>
      int(0)
      ["length"]=>
      int(64)
      ["unique"]=>
      bool(false)
      ["nullable"]=>
      bool(false)
      ["precision"]=>
      int(0)
      ["columnName"]=>
      string(8) "password"
    }
    ["email"]=>
    array(8) {
      ["fieldName"]=>
      string(5) "email"
      ["type"]=>
      string(6) "string"
      ["scale"]=>
      int(0)
      ["length"]=>
      int(191)
      ["unique"]=>
      bool(true)
      ["nullable"]=>
      bool(false)
      ["precision"]=>
      int(0)
      ["columnName"]=>
      string(5) "email"
    }
    ["isActive"]=>
    array(8) {
      ["fieldName"]=>
      string(8) "isActive"
      ["type"]=>
      string(7) "boolean"
      ["scale"]=>
      int(0)
      ["length"]=>
      NULL
      ["unique"]=>
      bool(false)
      ["nullable"]=>
      bool(false)
      ["precision"]=>
      int(0)
      ["columnName"]=>
      string(9) "is_active"
    }
  }
  ["fieldNames"]=>
  array(5) {
    ["id"]=>
    string(2) "id"
    ["username"]=>
    string(8) "username"
    ["password"]=>
    string(8) "password"
    ["email"]=>
    string(5) "email"
    ["is_active"]=>
    string(8) "isActive"
  }
  ["columnNames"]=>
  array(5) {
    ["id"]=>
    string(2) "id"
    ["username"]=>
    string(8) "username"
    ["password"]=>
    string(8) "password"
    ["email"]=>
    string(5) "email"
    ["isActive"]=>
    string(9) "is_active"
  }
  ["discriminatorValue"]=>
  NULL
  ["discriminatorMap"]=>
  array(0) {
  }
  ["discriminatorColumn"]=>
  NULL
  ["table"]=>
  array(1) {
    ["name"]=>
    string(7) "members"
  }
  ["lifecycleCallbacks"]=>
  array(0) {
  }
  ["entityListeners"]=>
  array(0) {
  }
  ["associationMappings"]=>
  array(0) {
  }
  ["isIdentifierComposite"]=>
  bool(false)
  ["containsForeignIdentifier"]=>
  bool(false)
  ["idGenerator"]=>
  object(Doctrine\ORM\Id\IdentityGenerator)#3899 (1) {
    ["sequenceName":"Doctrine\ORM\Id\IdentityGenerator":private]=>
    NULL
  }
  ["sequenceGeneratorDefinition"]=>
  NULL
  ["tableGeneratorDefinition"]=>
  NULL
  ["changeTrackingPolicy"]=>
  int(1)
  ["isVersioned"]=>
  NULL
  ["versionField"]=>
  NULL
  ["cache"]=>
  NULL
  ["reflClass"]=>
  object(ReflectionClass)#3915 (1) {
    ["name"]=>
    string(18) "App\Entity\Members"
  }
  ["isReadOnly"]=>
  bool(false)
  ["namingStrategy":protected]=>
  object(Doctrine\ORM\Mapping\UnderscoreNamingStrategy)#2435 (1) {
    ["case":"Doctrine\ORM\Mapping\UnderscoreNamingStrategy":private]=>
    int(0)
  }
  ["reflFields"]=>
  array(5) {
    ["id"]=>
    object(ReflectionProperty)#3916 (2) {
      ["name"]=>
      string(2) "id"
      ["class"]=>
      string(18) "App\Entity\Members"
    }
    ["username"]=>
    object(ReflectionProperty)#3917 (2) {
      ["name"]=>
      string(8) "username"
      ["class"]=>
      string(18) "App\Entity\Members"
    }
    ["password"]=>
    object(ReflectionProperty)#3918 (2) {
      ["name"]=>
      string(8) "password"
      ["class"]=>
      string(18) "App\Entity\Members"
    }
    ["email"]=>
    object(ReflectionProperty)#3919 (2) {
      ["name"]=>
      string(5) "email"
      ["class"]=>
      string(18) "App\Entity\Members"
    }
    ["isActive"]=>
    object(ReflectionProperty)#3920 (2) {
      ["name"]=>
      string(8) "isActive"
      ["class"]=>
      string(18) "App\Entity\Members"
    }
  }
  ["instantiator":"Doctrine\ORM\Mapping\ClassMetadataInfo":private]=>
  object(Doctrine\Instantiator\Instantiator)#2989 (0) {
  }
}

Это мой массив $fields:

array(5) {
  [0]=>
  object(App\Entity\Fields)#5481 (4) {
    ["id":"App\Entity\Fields":private]=>
    int(1)
    ["field_name":"App\Entity\Fields":private]=>
    string(2) "id"
    ["field_type":"App\Entity\Fields":private]=>
    string(6) "hidden"
    ["field_options":"App\Entity\Fields":private]=>
    string(0) ""
  }
  [1]=>
  object(App\Entity\Fields)#5485 (4) {
    ["id":"App\Entity\Fields":private]=>
    int(2)
    ["field_name":"App\Entity\Fields":private]=>
    string(8) "password"
    ["field_type":"App\Entity\Fields":private]=>
    string(8) "password"
    ["field_options":"App\Entity\Fields":private]=>
    string(0) ""
  }
  [2]=>
  object(App\Entity\Fields)#5486 (4) {
    ["id":"App\Entity\Fields":private]=>
    int(3)
    ["field_name":"App\Entity\Fields":private]=>
    string(4) "role"
    ["field_type":"App\Entity\Fields":private]=>
    string(8) "dropdown"
    ["field_options":"App\Entity\Fields":private]=>
    string(12) "admin,member"
  }
  [3]=>
  object(App\Entity\Fields)#5487 (4) {
    ["id":"App\Entity\Fields":private]=>
    int(4)
    ["field_name":"App\Entity\Fields":private]=>
    string(5) "email"
    ["field_type":"App\Entity\Fields":private]=>
    string(5) "email"
    ["field_options":"App\Entity\Fields":private]=>
    string(0) ""
  }
  [4]=>
  object(App\Entity\Fields)#5488 (4) {
    ["id":"App\Entity\Fields":private]=>
    int(5)
    ["field_name":"App\Entity\Fields":private]=>
    string(9) "is_active"
    ["field_type":"App\Entity\Fields":private]=>
    string(6) "hidden"
    ["field_options":"App\Entity\Fields":private]=>
    string(0) ""
  }
}

Что я хочу сделать, это объединить значения field_type $fields в fieldMappings из $classes.

Итак, в $classes это конечный результат, которого я хочу достичь:

 ["fieldMappings"]=>
    ...
     array(5) {
            ["id"]=>
            array(9) {
              ["fieldName"]=>
              string(2) "id"
              ["type"]=>
              string(7) "integer"
              ["scale"]=>
              int(0)
              ["length"]=>
              NULL
              ["unique"]=>
              bool(false)
              ["nullable"]=>
              bool(false)
              ["precision"]=>
              int(0)
              ["id"]=>
              bool(true)
              ["columnName"]=>
              string(2) "id"
              ["field_type"]=> 
              string(6) "hidden"
            }
     ...

Это мой подход:

 foreach ($classes->fieldMappings as $fieldMapping) {
    if($fieldMapping['fieldName']==$fields['field_name']){
       $fields.push($fields['field_type']); 
    }
  }

Мое сообщение об ошибке:

неопределенный индекс: field_name

1 Ответ

0 голосов
/ 06 сентября 2018

Вы забыли, что $ fields - это массив, и индекс, к которому вы пытаетесь получить доступ, не завершается на уровне индекса массива, если он не установлен на уровне индекса. Я думаю, что этот подход должен решить проблему

foreach ($classes->fieldMappings as $fieldMapping) {
foreach($fields as $field ) 
{  if($fieldMapping['fieldName']==$field['field_name']) 
  {
   $fields.push($field['field_type']); 
  }
 }
}
...