У меня есть класс с частным массивом. Когда я импортирую файл, добавляемый, хочу добавить новый объект (который создан) в этот массив для дальнейшего использования. У меня есть в объекте имя, которое я хочу использовать в качестве ключа. Итак:Добавить объект в массив с заданным ключом
<?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
нет. Кто-нибудь знает, как это возможно?
Редактировать: немного изменил код примера. Это не мой производственный код. Я ожидаю, что у меня есть один, но он останется равным нулю. Только когда я не использую ключ или жесткий код, объект добавляется.
Вы получаете сообщение об ошибке? – Barmar
Nop, ничего. У меня уже есть error_reporting. У меня уже есть счетчик эха ($ array) до и после пары новых ключей. Он продолжает показывать 1, но когда я использую array_push или жестко закодированный ключ, он говорит первый 1 и после пары значений ключа 2, поэтому thats correct ... –
Является ли '$ fileObj-> Name' set и not- ноль? Является ли '$ fileObj-> Name' строкой? –