标签: arrayobject

PHP数组和ArrayObject

哪一个应该用来操纵数据,数组或数组对象?像搜索,排序和其他数组操作.

php arrays arrayobject

31
推荐指数
2
解决办法
2万
查看次数

PHP中ArrayIterator,ArrayObject和Array之间的区别

有人可以解释清楚的根本差异ArrayIterator,ArrayObject以及在阵列中的PHP的功能和操作方面?谢谢!

php arrays arrayiterator arrayobject

27
推荐指数
3
解决办法
2万
查看次数

Spl,ArrayObject,ArrayObject :: STD_PROP_LIST

我试图在文档中理解STD_PROP_LIST常量,但到目前为止我还没理解它,并且没有找到任何解释:(文档有以下示例:

$a = new ArrayObject(array(), ArrayObject::STD_PROP_LIST);
$a['arr'] = 'array data';                             
$a->prop = 'prop data';                               
$b = new ArrayObject();                                   
$b['arr'] = 'array data';                             
$b->prop = 'prop data';                               

// ArrayObject Object                                     
// (                                                      
//      [prop] => prop data                               
// )                                                      
print_r($a);                                              

// ArrayObject Object                                     
// (                                                      
//      [arr] => array data                               
// )                                                      
print_r($b);
Run Code Online (Sandbox Code Playgroud)

两种印刷品都给我相同的结果:

ArrayObject Object ( [prop] => prop data [storage:ArrayObject:private] => Array ( [arr] =>      array data ) ) 
ArrayObject Object ( [prop] => prop data [storage:ArrayObject:private] => Array …
Run Code Online (Sandbox Code Playgroud)

php spl arrayobject

22
推荐指数
1
解决办法
1万
查看次数

在ArrayObject中循环和取消设置时foreach中出现意外行为.项目被忽略

(底部的例子!!!)

我们刚刚将后端升级到PHP7,之后,我们在代码中发现了一个与ArrayObject相关的错误.

代码只是循环遍历Object的一个副本(类型为native ArrayObject).foreach按值迭代.

代码的目的是过滤一些您不需要的值.在示例中,如果迭代值为"2"或"3",则取消设置.我已经尝试使用迭代器而不是复制的值而没有迭代器.

结果:

- 迭代器

  • PHP 5.6:按预期工作,返回值是没有值"two"和"three"的数组
  • PHP 7:它只删除"两个"并且似乎没有评估值为"3"的项目(请参阅循环内的回显,它不打印"三")

- 没有迭代器

  • PHP 5.6:收到通知但按预期工作,返回值是没有值"two"和"three"的数组
  • PHP 7:它只删除"两个"并且似乎没有评估值为"3"的项目(请参阅循环内的回显,它不打印"三")

第一个循环=> $ key = 0,$ value ="one"//继续

第二个循环=> $ key = 1,$ value ="second"//未设置

第三循环=> $ key = 3,$ value ="四"// WTF?哪里是$ key = 2,$ value ="三"????

所以我无法理解发生了什么.我们的时间解决方案是迭代原始对象并从副本中取消设置.有谁知道PHP核心(或ArrayObject/ArrayIterator)中的哪个更改?我有搜索它,但有些人有foreach这个问题,迭代的项目是参考.

如果在PHP 5.6和7之间切换,则行为会发生变化.

示例1(使用迭代器)

$elements = new ArrayObject();
$elements->append('one');
$elements->append('two');
$elements->append('three');
$elements->append('four');

print_r($elements);

$clone = clone $elements;
$it = $clone->getIterator();

echo "\n------\n";
foreach ($it as $key => $value) {
    echo $key."\t=>\t".$value."\n";
    if ($value …
Run Code Online (Sandbox Code Playgroud)

php arrays foreach arrayobject php-7

9
推荐指数
1
解决办法
551
查看次数

对对象的代理数组进行排序,localeCompare 不是函数

尝试使用 ES6arrayObj.sort(a,b) => a.property.localeCompare(b.property)语法但出现错误:

\n
\n

类型错误:a.property.localeCompare 不是函数。

\n
\n

我想localeCompare不在范围内,但不明白如何将其绑定到排序范围,也许是因为数据存储在代理中?我也在 VueJS 3 中工作,但认为这与这个问题无关。

\n
myData = \nProxy {0: {\xe2\x80\xa6}, 1: {\xe2\x80\xa6}, 2: {\xe2\x80\xa6}, 3: {\xe2\x80\xa6}, 4: {\xe2\x80\xa6}}\n[[Handler]]: Object\n[[Target]]: Array(5)\n0: {itemIndex: 1, itemFmt: 2, itemFmtName: 'Call To Order', guid: 'd66af412-00a0-4c49-b8b5-abaefb79fed0', maxCt: 1, \xe2\x80\xa6}\n1: {itemIndex: 2, itemFmt: 6, itemFmtName: 'Title/Discussion/Motion', guid: '9f7b9d34-3fcb-42c7-866e-a56f71a8aa4f', maxCt: 0, \xe2\x80\xa6}\n2: {itemIndex: 4, itemFmt: 6, itemFmtName: 'Title/Discussion/Motion', guid: '406bea5e-1cb0-4d90-96e9-9b80b64ff8ba', maxCt: 0, \xe2\x80\xa6}\n3: {itemIndex: 5, itemFmt: 6, itemFmtName: 'Title/Discussion/Motion', guid: 'ad9aacda-5100-4eef-9ead-c61e1ec0c285', maxCt: 0, \xe2\x80\xa6}\n4: …
Run Code Online (Sandbox Code Playgroud)

javascript sorting arrayobject vue.js vuejs3

9
推荐指数
1
解决办法
2万
查看次数

如何使用ArrayObject取消设置嵌套数组?

ideone

示例代码:

<?php
$a = new ArrayObject();
$a['b'] = array('c'=>array('d'));
print_r($a);
unset($a['b']['c']);
print_r($a);
Run Code Online (Sandbox Code Playgroud)

产量

ArrayObject Object
(
    [b] => Array
        (
            [c] => Array
                (
                    [0] => d
                )
        )
)
ArrayObject Object
(
    [b] => Array
        (
            [c] => Array
                (
                    [0] => d
                )
        )
)
Run Code Online (Sandbox Code Playgroud)

您注意到$a['b']['c']即使在取消设置后仍然存在.我希望$a只剩下一个值(b).

在我的实际应用中,我收到以下警告:

间接修改MyClass的重载元素没有任何效果

在哪里MyClass延伸ArrayObject.我有很多代码依赖于能够取消设置这样的嵌套元素,所以我怎样才能使它工作?

php arrayobject

8
推荐指数
1
解决办法
1336
查看次数

ArrayObject上的array_slice(或其他array_*函数)

我有一个关于ArrayObject的问题.我想在ArrayObject类中使用array_slice而我不能.有没有办法做到这一点,而无需为实现ArrayObject的类编写"切片"方法?

php arrays implementation slice arrayobject

7
推荐指数
2
解决办法
3859
查看次数

正确扩展PHP中的ArrayObject?

问题:我正在尝试扩展PHP ArrayObject,如下所示.不幸的是,我无法在设置多维对象时使其正常工作,而是因为我在PHP中启用了严格设置而引发错误.(Error: Strict standards: Creating default object from empty value)

问题:如何修改我的课程以自动为我创建不存在的级别?

代码:

$config = new Config;
$config->lvl1_0 = true; // Works
$config->lvl1_1->lvl2 = true; // Throws error as "lvl1" isn't set already

class Config extends ArrayObject
{
    function __construct() {
        parent::__construct(array(), self::ARRAY_AS_PROPS);
    }

    public function offsetSet($k, $v) {
        $v = is_array($v) ? new self($v) : $v;
        return parent::offsetSet($k, $v);
    }
}
Run Code Online (Sandbox Code Playgroud)

php arrays oop spl arrayobject

7
推荐指数
1
解决办法
1万
查看次数

PHP ArrayObject/ArrayIterator:概念与示例

我试图理解PHP中对象数组的概念.到目前为止,我只是使用常规数组循环遍历记录列表并在表格中显示它们.

我知道我可以使用Object做到这一点,但我不太清楚如何做到这一点.

我理解单个Object实例的概念,其中所有属性都表示从数据库填充的字段及其关联值,可以调用如下:

$objUser->first_name;
Run Code Online (Sandbox Code Playgroud)

现在我想了解的,根本找不到一个简单的答案是如何处理让我们说的用户列表,我想在一个页面上显示.我已经看到有ArrayObject,ArrayIterator等,但是根本无法理解它们是如何工作的,所以如果有人可以尝试用一些如何完成上述内容的例子来解释它,我将非常感激.

我正在寻找的是一个包含元素列表的对象,我可以像这样循环(如果可能的话):

foreach($objUsers as $objUser) {
    echo $objUser->first_name;
}
Run Code Online (Sandbox Code Playgroud)

谢谢.

php foreach arrayiterator arrayobject

7
推荐指数
1
解决办法
7134
查看次数

PHP的ArrayObject是否具有in_array等价物?

PHP具有in_array检查本机数组/集合中是否存在特定值的函数.我正在寻找ArrayObject的等效函数/方法,但没有一个方法似乎复制此功能.

我知道我可以将ArrayObject转换为(数组)并在in_array中使用它.我也知道我可以手动迭代ArrayObject并查找值.这似乎都不是"正确"的方式.

如果你能用证据支持,"不"是一个非常恰当的答案.

php arrays oop arrayobject

6
推荐指数
1
解决办法
2891
查看次数