- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在尝试删除对象中的前两项。例如,如果我想从数组中删除前两项,我会使用 array_slice($arrayName, 2)。
我已经在我的对象上试过了(嘿,为什么不呢?我知道它在技术上不是一个数组,但我很乐观)但它没有用。
在搜索这个时,我只找到了从数组中删除项目的方法。
$categories = array_slice(Mage::getModel('catalog/category')->getCollection()->addAttributeToSelect('*'), 2);
foreach($categories as $category){
echo "<div class='col'>{$category->getName()}</div>";
}
在上面的示例中,我想在通过 foreach 循环运行它之前从 $categories
(即“根类别”和“默认”)对象中删除前两个类别。解决这个问题的最佳方法是什么?我知道我能做到;
if($category->getName() != 'Root Category' && $category->getName() != 'Default'){
echo $category->getName();
}
但这感觉像是一个肮脏的解决方案。
看了Patrick Q的评论,才知道这确实是一个对象数组。所以我现在的问题是,为什么将 array_slice 应用于此数组时,会导致空白屏幕?当不应用 array_slice 时,循环工作正常。
忽略最后的编辑。它是一个对象。
至于可能的重复,虽然这个问题(有问题)确实帮助我解决了我的问题,但我认为,它们本质上是不同的问题。这个问题的核心是围绕为对象寻找 array_slice() 的有用替代方案。另一方面,问题是想找到一种方法,特别是根据下拉属性过滤 Magento 集合。虽然他们可能到达了同一个目的地,但目的和旅程却截然不同。
最佳答案
据我所知,Magento 中不存在该功能。
I'm trying to remove the first two items in an Object (emphasis mine)
默认情况下,PHP 对象不会像数组一样工作。对于对象具有第一项、第二项或第三项意味着什么,PHP 没有内部概念。
之所以可以foreach
或count
一个Magento 集合对象就好像它是一个数组一样,是因为基础集合对象实现了PHP 标准库中的特殊接口(interface)——IteratorAggregate和 Countable
#File: lib/Varien/Data/Collection.php
class Varien_Data_Collection implements IteratorAggregate, Countable
{
}
通过实现这些接口(interface),(通过根据上面的手动链接在 Varien_Data_Collection
中定义方法)对象获得 foreach
和 count()
功能.
Magento 的 IteratorAggregate
实现(为您提供 foreach
功能的东西)依赖于 PHP 的内置 ArrayIterator 类
#File: lib/Varien/Data/Collection.php
class Varien_Data_Collection implements IteratorAggregate, Countable
{
public function getIterator()
{
$this->load();
return new ArrayIterator($this->_items);
}
}
从 ArrayIterator
类创建的对象有 no built in slice functionality 。这是有道理的——从概念上讲,behind an iterator 的想法是它允许您遍历列表而无需立即将整个底层列表加载到内存中。 Magento 和 PHP 的基本迭代器与已经加载的数组一起工作,这在 OO PHP 中有点常见的冗余。
因此,如果您想将 slice 与 Magento 集合对象一起使用,我会尝试底层迭代器的 getArrayCopy
方法。
$array = array_slice($categories->getIterator()->getArrayCopy(), 2);
这应该(未经测试)返回一个包含预期元素切片的 PHP 数组。
希望对您有所帮助!
关于PHP - 相当于 array_slice() 的对象;,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35943426/
我的一位教授给了我们一些考试练习题,其中一个问题类似于下面(伪代码): a.setColor(blue); b.setColor(red); a = b; b.setColor(purple); b
我似乎经常使用这个测试 if( object && object !== "null" && object !== "undefined" ){ doSomething(); } 在对象上,我
C# Object/object 是值类型还是引用类型? 我检查过它们可以保留引用,但是这个引用不能用于更改对象。 using System; class MyClass { public s
我在通过 AJAX 发送 json 时遇到问题。 var data = [{"name": "Will", "surname": "Smith", "age": "40"},{"name": "Wil
当我尝试访问我的 View 中的对象 {{result}} 时(我从 Express js 服务器发送该对象),它只显示 [object][object]有谁知道如何获取 JSON 格式的值吗? 这是
我有不同类型的数据(可能是字符串、整数......)。这是一个简单的例子: public static void main(String[] args) { before("one"); }
嗨,我是 json 和 javascript 的新手。 我在这个网站找到了使用json数据作为表格的方法。 我很好奇为什么当我尝试使用 json 数据作为表时,我得到 [Object,Object]
已关闭。此问题需要 debugging details 。目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and the
我听别人说 null == object 比 object == null check 例如: void m1(Object obj ) { if(null == obj) // Is thi
Match 对象 提供了对正则表达式匹配的只读属性的访问。 说明 Match 对象只能通过 RegExp 对象的 Execute 方法来创建,该方法实际上返回了 Match 对象的集合。所有的
Class 对象 使用 Class 语句创建的对象。提供了对类的各种事件的访问。 说明 不允许显式地将一个变量声明为 Class 类型。在 VBScript 的上下文中,“类对象”一词指的是用
Folder 对象 提供对文件夹所有属性的访问。 说明 以下代码举例说明如何获得 Folder 对象并查看它的属性: Function ShowDateCreated(f
File 对象 提供对文件的所有属性的访问。 说明 以下代码举例说明如何获得一个 File 对象并查看它的属性: Function ShowDateCreated(fil
Drive 对象 提供对磁盘驱动器或网络共享的属性的访问。 说明 以下代码举例说明如何使用 Drive 对象访问驱动器的属性: Function ShowFreeSpac
FileSystemObject 对象 提供对计算机文件系统的访问。 说明 以下代码举例说明如何使用 FileSystemObject 对象返回一个 TextStream 对象,此对象可以被读
我是 javascript OOP 的新手,我认为这是一个相对基本的问题,但我无法通过搜索网络找到任何帮助。我是否遗漏了什么,或者我只是以错误的方式解决了这个问题? 这是我的示例代码: functio
我可以很容易地创造出很多不同的对象。例如像这样: var myObject = { myFunction: function () { return ""; } };
function Person(fname, lname) { this.fname = fname, this.lname = lname, this.getName = function()
任何人都可以向我解释为什么下面的代码给出 (object, Object) 吗? (console.log(dope) 给出了它应该的内容,但在 JSON.stringify 和 JSON.parse
我正在尝试完成散点图 exercise来自免费代码营。然而,我现在只自己学习了 d3 几个小时,在遵循 lynda.com 的教程后,我一直在尝试确定如何在工具提示中显示特定数据。 This code
我是一名优秀的程序员,十分优秀!