【问题标题】:unsetting object value取消设置对象值
【发布时间】:2015-09-11 14:41:19
【问题描述】:

我正在尝试取消设置对象的值

我想从对象$docList 中取消设置文档编号-950

foreach ($docList as  $document) {
    $visibleOrgIDs = $docList->LoadVisibleOrganizationListByDocID($document->getId());
    if(!in_array($org,$visibleOrgIDs)){
        unset($document->getId());
    }
}

$docList 是我正在遍历的对象。 print_r($docList) 将导致:

LomsDocumentList Object (
    [offset:protected] => 
    [limit:protected] => 
    [filter:protected] => 
    [sort:protected] => 
    [additionalFields:protected] => 
    [fetchCount] => 
    [countAll] => 
    [objectIds:RosiBaseList:private] => Array
        (
            [0] => 950
        )

    [storage:SplObjectStorage:private] => Array
        (
            [00000000277be4ca0000000108de8355] => Array
                (
                    [obj] => LomsDocument Object
                        (
                            [DBtableFieldNames:protected] => Array
                                (
                                    [id] => DOC_ID
                                    [parentDocumentId] => PARENT_ID
                                    [ownerId] => OWNER_ID
                                    [fileId] => FILE_ID
                                    [linkId] => LINK_ID
                                    [documentTypeId] => DOC_TYPE_ID
                                    [languageId] => LANG
                                    [organizationId] => ORG_ID
                                    [bpDepartmentId] => BP_DEPARTMENT_ID
                                    [elementId] => ELEMENT_ID
                                    [title] => TITLE
                                    [description] => DESCRIPTION
                                    [validUntil] => VALID_UNTIL
                                    [isInternal] => IS_INTERNAL
                                    [isInRevision] => IS_IN_REVISION
                                    [mediaType] => MEDIA_TYPE
                                    [expirationAdviceSent] => EXPIRATION_ADVICE_SENT
                                    [firstAuthorId] => CRT_ID
                                    [lastAuthorId] => LAST_UPDT_ID
                                    [contentOwnerId] => CONTENT_OWNER_ID
                                    [extractDocumentId] => EXTRACT_ID
                                    [sortField] => SORT_FIELD
                                    [category] => CATEGORY
                                    [mediaUpdateAt] => LAST_MEDIA_CHNG_DATE_TIME
                                    [mediaUpdateBy] => LAST_MEDIA_CHNG_NAME
                                )

                            [DBtableName:protected] => LOMS_DOC
                            [parentDocumentId:protected] => 
                            [parentDocument:protected] => 
                            [ownerId:protected] => 174450
                            [owner:protected] => 
                            [fileId:protected] => 4967
                            [file:protected] => 
                            [linkId:protected] => 
                            [link:protected] => 
                            [documentTypeId:protected] => 3
                            [documentType:protected] => 
                            [languageId:protected] => de
                            [language:protected] => 
                            [organizationId:protected] => 122
                            [organization:protected] => 
                            [bpDepartmentId:protected] => 122
                            [bpDepartment:protected] => 
                            [elementId:protected] => 52
                            [element:protected] => 
                            [title:protected] => Testdokument_1_New_BF_BENE_20.11.2014
                            [description:protected] => Test OMS BF Finance BeNe
                            [validUntil:protected] => DateTime Object
                                (
                                    [date] => 2014-12-19 00:00:00.000000
                                    [timezone_type] => 3
                                    [timezone] => Europe/Berlin
                                )

【问题讨论】:

  • 您已尝试取消设置值,但您必须取消设置变量。
  • 但是在这种情况下如何取消设置值为 950 的变量。

标签: php object unset


【解决方案1】:

您可以在 LomsDocumentList 类中创建一个方法,使用 array_search 函数取消设置该变量 objectIds

例子:

class LomsDocumentList {
    public function searchAndUnsetByValue($val) {
        $key = array_search($val, $this->objectIds);
        if ($key !== FALSE) {
            unset($this->objectIds[$key]);
        }
    }
}

然后调用它

$docList->searchAndUnsetByValue(950);

【讨论】:

  • 但是如果你可以在上面看到数组成员有私有访问权限,那么在这种情况下它不会起作用
  • 它会起作用,因为您刚刚在LomsDocumentList 类中添加了一个方法,所以现在可以访问objectIds 变量。阅读this
  • 如果我将上述方法放在 LomsDocumentList 类中,它会显示错误“成员没有私人访问权限”,但我如果放入 LomsDocument 则显示没有错误..但我想从 LomsDocumentList 对象中取消设置。见上面的数组它包含两个对象
  • 我了解它们是如何构建的,但我无法从您在此处发布的内容中看到全貌。我上面给你的是一个帮助你的指南。这是图书馆吗?
猜你喜欢
  • 2014-05-13
  • 1970-01-01
  • 2016-12-14
  • 1970-01-01
  • 2012-08-01
  • 2014-05-02
  • 2012-11-07
  • 1970-01-01
  • 2018-02-23
相关资源
最近更新 更多