Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/240.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在充满对象的数组中,只从第一个索引打印数据的更好方法?_Php_Arrays_Oop_Object_Foreach - Fatal编程技术网

Php 在充满对象的数组中,只从第一个索引打印数据的更好方法?

Php 在充满对象的数组中,只从第一个索引打印数据的更好方法?,php,arrays,oop,object,foreach,Php,Arrays,Oop,Object,Foreach,备选案文1: $foo = array($obj1, $obj2, $obj3); for ($i = 0; $i < 1; $i++) { echo $foo[$i]->attribute; echo $foo[$i]->attribute2; } //shows obj1's attribute and attribute2 备选案文3: $foo = array($obj1, $obj2, $obj3); $first_foo = $foo[0] /*

备选案文1:

$foo = array($obj1, $obj2, $obj3);
for ($i = 0; $i < 1; $i++) {
    echo $foo[$i]->attribute;
    echo $foo[$i]->attribute2;
}
//shows obj1's attribute and attribute2
备选案文3:

$foo = array($obj1, $obj2, $obj3);
$first_foo = $foo[0] /* now we just have an object, obj1 */
echo $first_foo->attribute;
echo $first_foo->attribute2;
//shows obj1's attribute and attribute2

我使用了选项3,但所有这些都感觉有点缺乏。。。你会怎么做?如果您想轻松地拉动前两个而不是后面的一个,那么选项1和2中的循环值得吗?例如,拉取最新的新闻文章与拉取最新的两篇等。

在这种情况下,不需要两次迭代。我会接受你的选择,代码少一点

$foo = array($obj1, $obj2, $obj3);
echo $foo[0]->attribute;
echo $foo[0]->attribute2;

在这种情况下不需要两次迭代。我会接受你的选择,代码少一点

$foo = array($obj1, $obj2, $obj3);
echo $foo[0]->attribute;
echo $foo[0]->attribute2;

这是为了从数组_shift中获取多个1,数组为空后返回null

$foo = array($obj1, $obj2, $obj3);
while($obj = array_shift($foo))
   echo $obj->attribute;
您的选项2可以更改为

$foo = array($obj1, $obj2, $obj3);
foreach ($foo as $object) {
    echo $object->attribute;
    echo $object->attribute2;
}

为什么不这样使用呢?

这是为了从数组中获取多于1的移位,该移位在数组为空后返回null

$foo = array($obj1, $obj2, $obj3);
while($obj = array_shift($foo))
   echo $obj->attribute;
您的选项2可以更改为

$foo = array($obj1, $obj2, $obj3);
foreach ($foo as $object) {
    echo $object->attribute;
    echo $object->attribute2;
}
为什么不这样使用呢?

假设:

$b = [0,1];
$c = [2,3];
让我们:

假设:

$b = [0,1];
$c = [2,3];
让我们:

为什么这么复杂

循环,
array\u shift()
。。。这都不是必需的

您自己给出了解决方案:

$foo[0]->attribute
另一个是

reset($foo)->attribute
在编辑时:

如果您想在以后编写代码以使其灵活,请执行以下操作

$need = 1; // the variable number of elements you need
for($i = 0; $i < $need; $i++)
    echo $foo[$i]->attribute;
$need=1;//所需元素的可变数量
对于($i=0;$i<$need;$i++)
echo$foo[$i]->属性;
为什么这么复杂

循环,
array\u shift()
。。。这都不是必需的

您自己给出了解决方案:

$foo[0]->attribute
另一个是

reset($foo)->attribute
在编辑时:

如果您想在以后编写代码以使其灵活,请执行以下操作

$need = 1; // the variable number of elements you need
for($i = 0; $i < $need; $i++)
    echo $foo[$i]->attribute;
$need=1;//所需元素的可变数量
对于($i=0;$i<$need;$i++)
echo$foo[$i]->属性;

额外的复杂性是因为我在想,如果以后你想从前面取2或3,可能会很方便。额外的复杂性允许更健壮一点。。但代价是什么?我对这个问题稍加修改。很明显,答案很可靠。添加了一个简单的
for
循环以满足您的需要。我想这就是问题所在。这是否意味着
for
循环真的是最好的方法?我会认为没有。。。但是选项3,就像您编写的选项一样,似乎有点“硬编码”。另一方面,
array\u shift()
将返回一个只包含一个元素的数组(实际上是无用的),并且必须在循环中
foreach
是一个非常复杂的机制(可能比
更复杂,而
for
)-参见。我认为
for
实际上是最好的方法。。不会想到…额外的复杂性是因为我在想,如果说,以后你想从前面拉2或3,可能会很方便。额外的复杂性允许更健壮一点。。但代价是什么?我对这个问题稍加修改。很明显,答案很可靠。添加了一个简单的
for
循环以满足您的需要。我想这就是问题所在。这是否意味着
for
循环真的是最好的方法?我会认为没有。。。但是选项3,就像您编写的选项一样,似乎有点“硬编码”。另一方面,
array\u shift()
将返回一个只包含一个元素的数组(实际上是无用的),并且必须在循环中
foreach
是一个非常复杂的机制(可能比
更复杂,而
for
)-参见。我认为
for
实际上是最好的方法。。不会想到的……其实不是@OP在这种情况下,我想你必须和foreach循环,但事实并非如此@OP在这种情况下,我想你必须与foreach循环。