Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.php > #18747
| From | "J.O. Aho" <user@example.net> |
|---|---|
| Newsgroups | comp.lang.php |
| Subject | Re: ArrayObject vs array |
| Date | 2021-07-25 11:48 +0200 |
| Message-ID | <im4qbnFnmluU1@mid.individual.net> (permalink) |
| References | (2 earlier) <sdgbps$18kp$1@gioia.aioe.org> <im277qF7fbjU1@mid.individual.net> <sdgs5f$1suj$1@gioia.aioe.org> <sdhgno$tt9$1@jstuckle.eternal-september.org> <sdj9us$o4p$1@gioia.aioe.org> |
On 25/07/2021 11.13, alex wrote:
> Il 24/07/21 18:56, Jerry Stuckle ha scritto:
>> On 7/24/2021 7:05 AM, alex wrote:
>>> Il 24/07/21 12:10, J.O. Aho ha scritto:
>>>> On 24/07/2021 08.26, alex wrote:
>>>>> Il 23/07/21 19:39, Jerry Stuckle ha scritto:
>>>>>> On 7/23/2021 5:16 AM, alex wrote:
>>>>>>> class C implements ArrayAccess, Countable, IteratorAggregate,
>>>>>>> Serializable {
>>>>>>>
>>>>>>> private $container = ['a', 'b'];
>>>>>>>
>>>>>>> public function offsetSet($offset, $value) {
>>>>>>> if (is_null($offset)) {
>>>>>>> $this->container[] = $value;
>>>>>>> } else {
>>>>>>> $this->container[$offset] = $value;
>>>>>>> }
>>>>>>> }
>>>>>>>
>>>>>>> public function offsetExists($offset) {
>>>>>>> return isset($this->container[$offset]);
>>>>>>> }
>>>>>>>
>>>>>>> public function offsetUnset($offset) {
>>>>>>> unset($this->container[$offset]);
>>>>>>> }
>>>>>>>
>>>>>>> public function offsetGet($offset) {
>>>>>>> return isset($this->container[$offset]) ?
>>>>>>> $this->container[$offset] : null;
>>>>>>> }
>>>>>>>
>>>>>>> public function count() {
>>>>>>> return count($this->container);
>>>>>>> }
>>>>>>>
>>>>>>> public function getIterator() {
>>>>>>> return new ArrayIterator($this->container);
>>>>>>> }
>>>>>>>
>>>>>>> public function serialize() {
>>>>>>> return serialize($this->container);
>>>>>>> }
>>>>>>>
>>>>>>> public function unserialize($data) {
>>>>>>> $this->container = unserialize($data);
>>>>>>> }
>>>>>>>
>>>>>>> public function getData() {
>>>>>>> return $this->container;
>>>>>>> }
>>>>>>>
>>>>>>> }
>>>>>>>
>>>>>>> print_r(
>>>>>>> (array) new ArrayObject(['a', 'b'])
>>>>>>> );
>>>>>>> print_r(
>>>>>>> (array) new C
>>>>>>> );
>>>>>>>
>>>>>>> Output:
>>>>>>>
>>>>>>> Array
>>>>>>> (
>>>>>>> [0] => a
>>>>>>> [1] => b
>>>>>>> )
>>>>>>> Array
>>>>>>> (
>>>>>>> [Ccontainer] => Array
>>>>>>> (
>>>>>>> [0] => a
>>>>>>> [1] => b
>>>>>>> )
>>>>>>>
>>>>>>> )
>>>>>>>
>>>>>>> Because the result is not the same?
>>>>>>
>>>>>> An object is not the same as a basic type. A basic type holds one
>>>>>> or more values. An object can also have methods to operate on
>>>>>> those values. The two are not compatible.
>>>>>>
>>>>>
>>>>> Could you tell me what these methods are?
>>>>
>>>> The object can be of any type, so the whole depends on the class
>>>> definition.
>>>>
>>>> for example:
>>>> class myclass {
>>>> public $array = Array();
>>>> public function getFirst() {
>>>> if(sizeof($this->array) == 0)
>>>> {
>>>> return null;
>>>> }
>>>> return $this->array[1];
>>>> }
>>>> }
>>>>
>>>> this has the method getFirst.
>>>>
>>>
>>> ???????
>>> So what?
>>
>> It means that the ArrayObject is a built-in type allows an object to
>> function as an array, as the PHP doc says. Your user-defined object
>> contains an array but does not function as an array, as the output
>> from print_r() shows.
>>
>
> So there is no way to create an object (class) that can *also* function
> as an array?
- A class can have an variable that is an array.
- An array can hold objects.
You can make objects to have links to other objects (reference), then it
would be a bit array like at the same time it can hold it's data, the
problem will be that none of the array functions in PHP will work, so I
think you need to pick one of the two options that have to use real arrays.
--
//Aho
Back to comp.lang.php | Previous | Next — Previous in thread | Next in thread | Find similar
ArrayObject vs array alex <1j9448a02@lnx159sneakemail.com.invalid> - 2021-07-23 11:16 +0200
Re: ArrayObject vs array Jerry Stuckle <jstucklex@attglobal.net> - 2021-07-23 13:39 -0400
Re: ArrayObject vs array alex <1j9448a02@lnx159sneakemail.com.invalid> - 2021-07-24 08:26 +0200
Re: ArrayObject vs array "J.O. Aho" <user@example.net> - 2021-07-24 12:10 +0200
Re: ArrayObject vs array alex <1j9448a02@lnx159sneakemail.com.invalid> - 2021-07-24 13:05 +0200
Re: ArrayObject vs array Jerry Stuckle <jstucklex@attglobal.net> - 2021-07-24 12:56 -0400
Re: ArrayObject vs array alex <1j9448a02@lnx159sneakemail.com.invalid> - 2021-07-25 11:13 +0200
Re: ArrayObject vs array "J.O. Aho" <user@example.net> - 2021-07-25 11:48 +0200
Re: ArrayObject vs array alex <1j9448a02@lnx159sneakemail.com.invalid> - 2021-07-26 10:14 +0200
Re: ArrayObject vs array "J.O. Aho" <user@example.net> - 2021-07-26 11:11 +0200
Re: ArrayObject vs array Arno Welzel <usenet@arnowelzel.de> - 2021-07-26 12:16 +0200
csiph-web