2013-06-22 2 views
0

У меня есть класс с частным массивом. Когда я импортирую файл, добавляемый, хочу добавить новый объект (который создан) в этот массив для дальнейшего использования. У меня есть в объекте имя, которое я хочу использовать в качестве ключа. Итак:Добавить объект в массив с заданным ключом

<?php 
$object = new Object(); 
$object->Name = "test"; 

class OtherObject 
{ 
    private $loaded_files = array(); 

    public function AddObject($fileObj) 
    { 
    echo count($this->loaded_files); //results 0 
    $this->loaded_files[$fileObj->Name] = clone $fileObj; 
    echo count($this->loaded_files); //results 0 

    //array_push($this->loaded_files, clone $fileObj); 
    //$this->loaded_files["hard-coded"] = clone $fileObj; 
    } 
} 

$otherObject = new OtherObject(); 
$otherObject->AddObject($object); 
?> 

Как вы можете видеть на моем примере я хочу использовать имя в качестве ключа и клонировать объект так, он будет поставлен в массиве. После расследования array_push() (так, без ключа) и жестко закодированный ключ работают нормально, но $fileObj->Name нет. Кто-нибудь знает, как это возможно?

Редактировать: немного изменил код примера. Это не мой производственный код. Я ожидаю, что у меня есть один, но он останется равным нулю. Только когда я не использую ключ или жесткий код, объект добавляется.

+0

Вы получаете сообщение об ошибке? – Barmar

+0

Nop, ничего. У меня уже есть error_reporting. У меня уже есть счетчик эха ($ array) до и после пары новых ключей. Он продолжает показывать 1, но когда я использую array_push или жестко закодированный ключ, он говорит первый 1 и после пары значений ключа 2, поэтому thats correct ... –

+0

Является ли '$ fileObj-> Name' set и not- ноль? Является ли '$ fileObj-> Name' строкой? –

ответ

0

Хорошо, я нашел проблему. @Barmar, @AlexShesterov благодарит за помощь.

Проблема была не обрезана перед добавлением объекта. Итак, после добавления обрезки ($ value) все элементы были решены и элемент добавлен в массив :)

+0

Это не должно иметь значения, нет ничего плохого в ключах, которые вокруг них имеют пробелы. Это может затруднить поиск нужного элемента, но не должно препятствовать их добавлению. – Barmar

+0

@Barmar Я добавил обрезку к элементам, и теперь это работает, мой код не изменяется, и теперь он работает правильно. Dont bear me :) –

+0

Вы имеете в виду 'trim ($ fileObj-> Name)'? В вашем примере кода нет пробелов вокруг имени '" test "', так что это действительно не может изменить ситуацию. – Barmar